前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSRF简单复现

SSRF简单复现

作者头像
kam1
发布2022-03-08 13:47:37
7040
发布2022-03-08 13:47:37
举报
文章被收录于专栏:HackTheBox渗透学习记录

SSRF(服务器端请求伪造)

0x01. 相似原理:

​ 翻译: 提供需要翻译的文字 -> 翻译软件 -> 返回翻译后的数据 ​ A 控制 B 去访问 C ​ 网页翻译原理: ​ 方案A: ​ 1.请求目标站点 ​ 2.获取浏览器上面的目标站点数据 ​ 3.翻译软件把数据返回 ​ 方案B: ​ 1.提供目标网址给翻译网站 ​ 2.翻译网站代访问,得到目标网站数据 ​ 3.翻译网站返回翻译后的数据

SSRF:指攻击者能够从易受攻击的Web应用程序发送设计的请求对其他网站进行攻击(利用一个可发起网络请求的服务当做跳板来攻击其他目标)

0x02. SSRF的核心是攻击内网

​ 通过SSRF可以做到如下:

  • 扫描内部网络
  • 向内部任意主机和任意端口发送数据包
  • DOS
  • 暴力穷举:网络请求

有些时候厂商为什么会用已知漏洞组件

  • 使用的时候没有漏洞
  • 爆发漏洞管理员没关注
  • 漏洞修复有风险
  • 内网不会被黑客访问到。 防御SSRF方法: 1.正则匹配法 内网ip:http://内网IP地址 禁止url写内网ip http://www.baidu.com@59.63.200.79:8003 @绕过 当@被禁止时可以用DNS方法: dnslog中的所有url都是访问127.0.0.1 访问网站的协议有很多: 使用file协议读取本地文件 用法:file:/// 读取文件 使用dict(可探测端口) 用法:dict://地址+端口 dict://127.0.0.1:81 Redis:缓存数据库(默认情况没有密码) 但是只有本机能够访问 SSRF -> 1.可作为跳板 2.可以攻击内网网站 3.可以攻击内网的服务
0x03. 如何发现ssrf:

​ 传参出现协议头: http:// http://www.baidu.com/s?wd=ip ​ 协议:http:// 任意其他协议都可以试试SSRF ​ 传参出现文件名: a.txt => b.php (x.后缀) http://www.baidu.com/?id=1.php ​ (1)文件读取 ​ (2)文件包含 ​ (3)任意文件下载

0x04. SSRF、CSRF、XSS的区别:

CSRF: 利用cookie,让浏览器偷偷发包 CSRF(客户端请求伪造、跨站请求伪造) -> 控制受害者的浏览器发起网络请求 核心:浏览器在用户不知情的情况下偷偷发送数据包 XSS: 窃取cookie,在浏览器上执行

SSRF:在服务器上执行,让服务器偷偷发包 (跟后端有关,与前端无关) SSRF(服务端请求伪造) -> 控制目标服务器发起网络请求

代码语言:javascript
复制
如何防御SSRF
正则匹配法,禁止访问内网ip 127.0.0.1,@绕过

有防御肯定有绕过,dnslog中的所有域名都是访问127.0.0.1

测试

代码语言:javascript
复制
打开靶场,让输入想访问的地址
这里就填写baidu.com

可以发起网络请求,存在SSRF,但SSRF的核心就是攻击内网,试试访问127.0.0.1:80能不能够访问到

成功访问到127.0.0.1:80,所以页面有相同 既然能够访问到,那就用burp跑一下,用dict探测端口开放了哪些

代码语言:javascript
复制
这时候还没跑完,但是有看到开放了80 81端口,先让他跑着,手动访问一下81端口看有没有什么内容。

发现页面是没有任何东西,但是打开页面源代码,发现了flag。

进阶内容(利用gopher、redis getshell)

0.01. 安装Redis

在kali中安装redis,安装版本命令下载压缩包 :

wget http://download.redis.io/releases/redis-2.8.17.tar.gz 解压:tar xzf redis-2.8.17.tar.gz 进入到redis目录:cd redis-2.8.17 make 然后进入到src文件夹,./redis-server启动redis服务 然后再./redis-cli启动redis 输入ping 如果返回pong就正常正常启动了

0x02. 创建根目录并配置redis

首先需要用到root权限,进入home文件夹后创建一个wwwroot文件夹,在wwwroot中创建一个default文件夹,以便存放后续的一句话木马。 /home/wwwroot/default是网站的根目录.

这里我保存失败了,需要用ROOT权限来启动Redis,又重新来过,用root权限开启redis服务器以及运行redis

0x03. 开启Wireshark监听网卡

打开Wireshark,选择kali网卡进行监听,然后在redis中,刚刚创建好的根目录下写入一个一句话木马。

在Wireshark中右键 -> 追踪TCP流 -> 复制所有内容进行url编码

由于事先没有开启wireshark监听网卡,所以这里我开启wireshark之后,又重新创建了一个一句话木马

在wireshark中,直接右键追踪-TCP流

将数据复制下来,进行url编码

url编码之后加上gopher的前缀,然后放到搜索框内,点击执行,上面这张图因为没有将?进行url编码导致失败,一定要将问号也进行url编码.

代码语言:javascript
复制
总结一下遇到的问题:   
1.下载安装redis之后用root权限运行redis相关服务、启动   
2.开启wireshark监听网卡之后再用redis执行恶意语句  
3.首先需要想办法获取到网站的目录    
4.在对追踪到的tcp数据流内容进行url编码的时候,换行需要用%0d%0a来代替,问号用%3f,然后加上gopher前缀gopher://127.0.0.1:6379/ 其中6379是redis默认端口号
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SSRF(服务器端请求伪造)
    • 0x01. 相似原理:
      • 0x02. SSRF的核心是攻击内网
        • 0x03. 如何发现ssrf:
          • 0x04. SSRF、CSRF、XSS的区别:
          • 测试
          • 进阶内容(利用gopher、redis getshell)
            • 0.01. 安装Redis
              • 0x02. 创建根目录并配置redis
                • 0x03. 开启Wireshark监听网卡
                相关产品与服务
                云数据库 Redis®
                腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档