我将向大家介绍我在处理 SSRF 漏洞时的心态。这些文章来自受控环境,用于解释我的方法,以帮助您学习如何自己测试应用程序。
目的
访问位于 192.168.0.0/24 范围内的内部管理面板以删除用户 carlos。
什么是 SSRF?
服务器端请求伪造 (SSRF) 是一种漏洞,它操纵 Web 应用程序从服务器的角度发送未经授权的请求。攻击者可以强制服务器向内部或外部资源发出请求,从而构成重大风险,因为它使攻击者能够绕过传统的安全措施并获得对敏感资源的未经授权的访问。
我的目标是在各种网络安全主题中为您提供价值,并成为您扩展专业知识或任何有抱负的网络安全专业人士进入该领域的最终目的地。
方法论
想要亲自尝试一下实验室并跟随?您可以在 PortSwigger 的网站上免费查看。
侦察
此应用程序以一个产品商店为特色。然而,与许多商店不同的是,它没有任何与产品相关的操作,只有查看文本描述的能力。
看起来好像也有帐户功能,但我们无法使用默认实验室凭证登录。
这个实验非常简单,我们可以与之交互,看起来没有太多可点击的内容。
此时,我们应该把目光转向 SiteMap:
除了 Root Request之外,我们真的没有任何感兴趣的东西。让我们对 GET 请求启动主动扫描,并将其发送到 Repeater,以便我们可以开始尝试它。
在 Repeater 中,我们可以看到更改 host 标头会导致 403 响应。
我们可以测试在 GET 请求中提供绝对 URL,看到请求现在有效并返回 200。
让我们尝试将这两种技术放在一起。
这一次,我们可以看到我们收到了一个完全不同的响应,即 504 超时,这表明正在验证绝对 URL 而不是 Host 标头。
让我们验证一下连接是否仍在进行。
输入 Collaborator 域来代替 Host Header。
我们得到了合作者的回应——证实了我们的怀疑。
测试
将请求发送到 Burp Intruder。
由于我们不希望 Host 标头与我们发送请求的目标匹配,因此请确保取消选中 Payload 顶部的 Update Host 标头以匹配目标。
接下来,我们需要设置主机标头以扫描管理界面。
我们知道该位置在 192.168.0.0/24 范围内,相当于 192.168.0.0–192.168.0.255。
我们需要设置 Sniper Attack 来搜索这些端点。
首先,设置有效负载,并将 admin 附加到绝对 URL 路径。
然后,在主机标头中设置基本 IP。
最后,在第四个八位字节上添加一个有效载荷位置。
完成后,它应如下所示:
接下来,导航到 Payloads 选项卡,然后为 Payload 位置 1 选择 Numbers。将 0 到 255 的范围增加 1。
开始攻击。
完成后,按 Status Code 排序。您应该会看到所有状态代码都返回 504,但一个状态代码返回 200 除外。
如果您单击它,您将看到我们找到了我们的管理面板(每个实验室实例的 IP 位置会有所不同)。
开发
在来自我们的入侵者攻击的请求中,请注意我们现在如何访问可以删除用户的管理面板。
这里有一些事情需要注意:
- 它有一个位于 /admin/delete 的操作请求
- 它需要一个 csrf 值来发送 POST 请求,但它以明文形式包含在 DOM 中。
- 您可以通过 username 参数将用户提交到终端节点。
让我们回到 Repeater 并编辑请求以反映我们的新发现。
首先,单击 GET 请求,然后单击 Change request method 将其更改为 POST。
将我们新找到的管理面板位置添加到 Host 标头中。在此特定情况下:192.168.0.27。
将 /admin/delete 附加到绝对 URL。
添加 csrf 和 username 作为 POST 参数。
检查下面的 post 请求。发送后,您应该会收到 302 表格,确认实验已解决!
我们学到了什么
在本演练中,我们演示了脆弱的 SSRF 控制可以产生的结果。在这种情况下,我们利用了 Host 标头和绝对 URL 之间的验证差异,允许攻击者 (我们) 通过一些创造性思维访问受限资源。
原文始发于微信公众号(安全狗的自我修养):通过有缺陷的请求解析的 SSRF
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论