从业者-绕过常见防御-开放重定向
  # 实验室:通过开放重定向绕过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)