从业者-绕过常见防御-开放重定向
# 实验室:通过开放重定向绕过SSRF过滤器
# 题目
此实验室具有库存检查功能,可从内部系统获取数据。
要解决实验室问题,请将库存检查的 URL 更改为http://192.168.0.12:8080/admin
,以此访问管理界面并删除carlos
用户。
库存检查器已被限制为只能访问本地应用程序,因此,你首先需要找到 能够影响应用程序的开放重定向。
- 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-filter-bypass-via-open-redirection
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 先寻找站点上的 开放重定向 漏洞,使用该漏洞配合SSRF,然后访问管理界面并删除 carlos 用户。
点击 “ACCESS THE LAB” 进入实验室。

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

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

查看捕获的数据包,在 POST 中存在一个参数stockApi
。
和之前的实验室不一样,这次它只请求了 URL 的路径部分,缺少了前面的 协议和主机名,并非完整的 URL 链接。

然后,我在站点上开启了一段 开放重定向 的寻找之旅......
并经过了三十多次的尝试。(我是fw)

然后,我在stockApi
参数中输入了一个双引号"
,响应返回了错误信息!
错误信息中包含了一个完整的 URL 链接。说明应用程序会将 预先设置好的主机名 与 stockApi
参数的内容进行拼接。

你说你没看懂?没关系,我们将整个参数值都删掉,只留下双引号"
。
这次返回了http://localhost:80
,这看起来是一个正常的 URL 。但是,结合前面所学的知识,你知道该怎么利用了吗?

结合@
符号,实现开放重定向,使应用程序访问我们所指定的域名。
http://预期主机名:假密码@恶意主机名/
stockApi=@192.168.0.12:8080/admin
最终, 参数在后端进行拼接, 形成:
http://localhost:80@192.168.0.12:8080/admin
1
2
3
4
5
6
2
3
4
5
6
符号@
前面的localhost:80
会被程序当做 用户名:密码,程序认为@
后面的192.168.0.12:8080
才是主机名。

最后,访问删除用户的 URL ,并删除 carlos 用户。
@192.168.0.12:8080/admin/delete?username=carlos
1

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

编辑 (opens new window)