ssrf
服务器伪造请求
服务端提供从别的地方获取资源的功能点 如果可控就可能造成ssrf攻击内网
主要攻击服务集群中的内网服务
ssrf产生
远程加载图片或者下载图片
调用远程资源
共享 或者 分析资源时可能会重定向地址
php中的常见方法
1 | file_get_contents($url) |
攻击向量
支持多种协议
dict://ip:port/command
dict协议是一个字典协议 用来查询网络字典内容的应用层协议 走TCP协议
可以用来探测内网服务 访问的时候会携带少量数据 或者直接访问服务
只会回显有tcp回显的服务
gopher://ip:port/_<TCP原始数据>
可以发送tcp的原始数据 一般用来打post请求 或者是打某些服务 mysql redis
file 文件读取
http 超文本传输协议
ssrf利用
探测内网服务
使用dict协议+bp爆破 可以探测出底层使用tcp协议且会回显信息的服务 基本可以爆破出绝大部分服务
或者http协议扫内网web服务
打mysql
和直接打mysql没什么区别 只不过只能使用那几个协议
条件
可以未授权登录
使用gopherus工具可以一键生成攻击向量

这里使用国光师傅的ssrf-lab测试

这里的输入框可以打ssrf
我们输入了刚刚生成的数据 打mysql
确实输出了用户信息 可以正常利用
打redis
也和直接打redis没区别 只不过只能使用特定协议
我们可以用dict协议直接和redis进行一些简单的命令执行
也可以直接使用gopherus工具一键生成攻击向量
bypass
@绕过
http://[用户凭据]@[ip]:[port]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]
进制编码绕过
1 | 字符串: http://127.0.0.1/ |
DNS重绑
dns重绑工具 https://lock.cmpxchg8b.com/rebinder.html
服务端请求解析域名 恶意域名解析系统放回一个正常的外网ip 绕过检查 但是TTL为0 服务端拿到之后继续请求解析 后续解析返回内网ip
TTL为0 绕过初始检查
302重定向
获取一个短链url 访问自动重定向到内网ip
泛域名解析
即使域名不对也会访问到正确的ip上
ip+.xip.name
说些什么吧!