服务器端请求伪造 (SSRF)

什么是SSRF?

服务器端请求伪造是一种 Web 安全漏洞,它允许攻击者使服务器端应用程序向非预期位置发出请求。

在典型的 SSRF 攻击中,攻击者可能导致服务器与组织基础结构中的仅限内部的服务建立连接。在其他情况下,它们可能能够强制服务器连接到任意外部系统。这可能会泄露敏感数据,例如授权凭据。

在此示例中,攻击者可以修改请求以指定服务器本地的 URL:

POST /product/stock HTTP/1.0

Content-Type: application/x-www-form-urlencoded

Content-Length: 118

stockApi=http://localhost/admin

服务器获取 URL 的内容并将其返回给用户。/admin

攻击者可以访问该 URL,但管理功能通常只有经过身份验证的用户才能访问。这意味着攻击者不会看到任何感兴趣的内容。但是,如果对 URL 的请求来自本地计算机,则会绕过正常的访问控制。应用程序授予对管理功能的完全访问权限,因为请求似乎来自受信任的位置。/admin/admin

针对服务器的 SSRF 攻击 - 续

为什么应用程序以这种方式运行,并隐式信任来自本地计算机的请求?这可能是由于各种原因造成的:

  • 访问控制检查可能在位于应用程序服务器前面的其他组件中实现。当与服务器建立连接时,将绕过检查。
  • 出于灾难恢复目的,应用程序可能允许对来自本地计算机的任何用户进行管理访问,而无需登录。这为管理员提供了一种在丢失凭据时恢复系统的方法。这假定只有完全受信任的用户才能直接来自服务器。
  • 管理界面可能使用不同的端口号侦听主应用程序,并且用户可能无法直接访问。

在这种信任关系中,来自本地计算机的请求的处理方式与普通请求不同,通常会使 SSRF 成为关键漏洞。

Admin interface only available if logged in as an administrator, or if requested from loopback

管理员界面仅在管理员身份登录或从环回请求时可用

  1. URL 浏览到 /admin 目录返回一个错误,指出该目录仅可从服务器本地使用,或对已登录的管理员可用。
  2. 找到库存检查功能,打开 burp 进行拦截并发送到 repeater,库存将发出与后端 API 通信的请求。在 burp 中观察到有个参数是stockApi,有 http 字样,判断为编码后 URL。通过 Ctrl+Shift+U 对 URL 解码后,能够看到库存检查功能的 URL 路径和端口号。
  3. 查看是否有应用程序在本地主机上运行,将stockApi值换为http://localhost,发送后显示成功,点开 burp 的 Render,能够看到网站页面上有Admin panel字样,说明进入了管理面板
  4. 在 Response 中搜索 admin,可看到Admin panel的路径是/admin,把路径添加到 stockApi 上后,继续在 Response 中搜索 carlos,可看到删除的路径是/admin/delete?username=carlos
  5. 删除 carlos:http://localhost/admin/delete?username=carlos,遵循 302 重定向

1)给IP地址的最后一位添加number payload从1到255,步长是1,可以试出来IP地址

2)发送到repeater,找到删除carlos的url参数

posted @ 2024-01-31 10:13  CLLWA  阅读(36)  评论(0编辑  收藏  举报