声明
本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果
一、Server-side request forgery (SSRF)
01、Basic SSRF against the local server
描述
该实验室具有库存检查功能,可从内部系统获取数据。
为了解决实验室,更改股票检查 URL 以访问管理界面http://localhost/admin
并删除用户carlos
。
解决方案
1.浏览/admin 并观察您无法直接访问管理页面。
2.访问一个产品,点击“Check stock”,拦截 Burp Suite 中的请求,发送给 Burp Repeater。
3.将 stockApi 参数中的 URL 更改为http://localhost/admin. 这应该显示管理界面。
4.阅读 HTML 确定删除目标用户的 URL,即: http://localhost/admin/delete?username=carlos
5.在 stockApi 参数中提交这个 URL ,来传递 SSRF 攻击。
为了感谢广大读者伙伴的支持,准备了以下福利给到大家:【一>所有资源获取<一】1、200 多本网络安全系列电子书(该有的都有了)2、全套工具包(最全中文版,想用哪个用哪个)3、100 份 src 源码技术文档(项目学习不停,实践得真知)4、网络安全基础入门、Linux、web 安全、攻防方面的视频(2021 最新版)5、网络安全学习路线(告别不入流的学习)6、ctf 夺旗赛解析(题目解析实战操作)
02、Basic SSRF against another back-end system
描述
该实验室具有库存检查功能,可从内部系统获取数据。
为了解决实验室问题,请使用库存检查功能处的漏洞扫描192.168.0.X
C 段哪个 IP 的 8080 端口 上开启了 WEB 服务管理界面,然后使用它删除用户carlos
。
解决方案
1.访问一个产品,点击“Check stock”,拦截 Burp Suite 中的请求,发送给 Burp Intruder。 2.单击“clear §”,将 stockApi 参数更改为http://192.168.0.1:8080/admin,对 IP 地址的最后一个八位字节(数字 1),单击“添加有效载荷 §”。
3.切换到 Payloads 选项卡,将 payload 类型改为 Numbers,在“From”、“To”和“Step”框中分别输入 1、255 和 1。意思是从 1 到 255 遍历,点击“开始攻击”。
4.单击“状态”列可按状态代码升序对其进行排序。您应该会看到一个状态为 200 的条目,显示了一个管理界面。
5.点击这个请求,发送到 Burp Repeater,将里面的路径改成 stockApi:/admin/delete?username=carlos
03、SSRF with blacklist-based input filter
描述
该实验室具有库存检查功能,可从内部系统获取数据。
为了解决实验室,更改股票检查 URL 以访问管理界面http://localhost/admin
并删除用户carlos
。
开发人员部署了两个您需要绕过的弱反 SSRF 防御。
解决方案
1.访问一个产品,点击“Check stock”,拦截 Burp Suite 中的请求,发送给 Burp Repeater。 2.将 stockApi 参数中的 URL 更改为http://127.0.0.1/,请求被阻止。
3.通过将 URL 更改为以下内容来绕过块: http://127.1/
使用的替代 IP 表示 127.0.0.1,例如 2130706433,017700000001,或 127.1。
4.将 URL 更改为http://127.1/admin并观察该 URL 再次被阻止。
5.通过双 URL 编码将“a”混淆为 %2561 以访问管理界面并删除目标用户。a
的 url 编码结果是%61
,%
的 url 编码是%25
6.删除 carlos
stockApi=http://127.1/%2561dmin/delete?username=carlos
04、SSRF with whitelist-based input filter
基于白名单绕过滤的 ssrf
某些应用程序仅允许与允许值的白名单匹配、以该白名单开头或包含该白名单的输入。在这种情况下,您有时可以通过利用 URL 解析中的不一致来绕过过滤器。
URL 规范包含许多在实现 URL 的临时解析和验证时容易被忽视的功能:
您可以使用
@
字符在 URL 中的主机名之前嵌入凭据。例如:https://expected-host@evil-host
。您可以使用
#
字符来表示 URL 片段。例如:https://evil-host#expected-host
。您可以利用 DNS 命名层次结构将所需的输入放入您控制的完全限定的 DNS 名称中。例如:
https://expected-host.evil-host
。您可以对字符进行 URL 编码以混淆 URL 解析代码。如果实现过滤器的代码处理 URL 编码字符的方式不同于执行后端 HTTP 请求的代码,这将特别有用。
您可以结合使用这些技术。