Lab: Exploiting XXE to perform SSRF attacks: 利用XXE进行SSRF攻击

利用XXE进行SSRF攻击

除了检索敏感数据之外,XXE 攻击的另一个主要影响是它们可用于执行服务器端请求伪造 (SSRF)。这是一个潜在的严重漏洞,其中可以诱导服务器端应用程序向服务器可以访问的任何 URL 发出 HTTP 请求。

要利用 XXE 漏洞执行SSRF 攻击,您需要使用要定位的 URL 定义外部 XML 实体,并在数据值中使用定义的实体。如果您可以在应用程序响应中返回的数据值中使用定义的实体,那么您将能够从应用程序响应中的 URL 查看响应,从而获得与后端系统的双向交互。如果没有,那么您将只能执行盲目的 SSRF攻击(这仍然会产生严重的后果)。

在以下 XXE 示例中,外部实体将导致服务器向组织基础架构内的内部系统发出后端 HTTP 请求:

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://internal.vulnerable-website.com/"> ]>

内容

该实验室具有“检查库存”功能,可解析 XML 输入并在响应中返回任何意外值。

实验室服务器在默认 URL 上运行(模拟的)EC2 元数据端点,即http://169.254.169.254/. 此端点可用于检索有关实例的数据,其中一些可能是敏感的。

为解决实验室,利用XXE漏洞执行SSRF攻击,从EC2元数据端点获取服务器的IAM秘密访问密钥。

方法:

  • 访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
  • 在 XML 声明和stockCheck元素之间插入以下外部实体定义:
  • <!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>
  • 将productId数字替换为对外部实体的引用:&xxe;。响应应包含“无效的产品 ID:”,后跟来自元数据端点的响应,最初是文件夹名称。
    image
  • 迭代更新 DTD 中的 URL 以探索 API,直到到达/latest/meta-data/iam/security-credentials/admin. 这应该返回包含SecretAccessKey.
    image
    image
    image
    UBsojhklKeDNPLr70VuB
posted @ 2021-08-26 15:19  Zeker62  阅读(290)  评论(0编辑  收藏  举报