从业者-绕过常见防御-黑名单过滤器
# 实验室:基于黑名单的输入过滤器 中的SSRF
# 题目
此实验室具有库存检查功能,可从内部系统获取数据。
要解决实验室问题,请将库存检查的 URL 更改为http://localhost/admin
,以此访问管理界面并删除carlos
用户。
开发人员部署了两个脆弱的反 SSRF 防御,你需要绕过它们。
- name: 实验室-从业者
desc: 基于黑名单的输入过滤器 中的SSRF >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/ssrf/lab-ssrf-with-blacklist-filter
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 找到 库存检查 功能并更改参数的 URL 值,尝试绕过 SSRF 防御,然后访问管理界面并删除 carlos 用户。
点击 “ACCESS THE LAB” 进入实验室。

来到首页,点击任意商品下方的 “View details” 进入详情页。

在商品详情页的下方,可以看到一个库存检查功能。
启用浏览器代理,然后点击 “Check stock” 检查库存。

查看捕获的数据包,在 POST 中存在一个参数stockApi
,它直接请求了一个 URL 链接。

通过 Repeater 功能模块,修改其中的stockApi
参数为http://localhost/admin
。
访问失败,请求被阻止。

根据前面学习到的理论知识,使用 IP 地址的第一种替代形式127.1
尝试绕过,失败。
http:/admin
1

使用 IP 地址的 第二种和第三种 替代形式尝试绕过,皆失败。
http:/admin
http:/admin
1
2
2

随后经过尝试,可以使用 “替代IP形式+大小写变体” 进行绕过。
使用 IP 地址替代形式127.1
和大小写变体后的路径/Admin
进行绕过,成功访问管理界面。
# 第一种IP变体+路径大小写变体=绕过
http:/Admin
# 以下是失败的尝试
http:/admin
http:/admin
http:/Admin
http:/admin
http:/admin
http:/Admin
http:/admin
http:/Admin
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14

在此过程中,我还尝试了另外两种的 IP 地址替代形式。
地址2130706433
,错误的主机名。

地址017700000001
,应用程序无法访问该地址,响应返回 500 状态码。

最后,访问管理界面用于删除用户的 URL,以删除 carlos 用户。
http:/Admin/delete?username=carlos
1
访问成功。

回到浏览器页面,实验完成。

编辑 (opens new window)