白帽故事 · 2022年2月25日 0

在阅读了220份IDOR漏洞报告后的心得体会

背景介绍:

今天的分享来自国外一位名叫Sm9I的白帽子,他从hackerone中梳理了220份有关IDOR的漏洞报告,花了一周的时间,整理出这份心得体会。

为了便于参考,本文中将通过数字来引用各种漏洞报告,这些数字与漏洞报告相关联,可以通过替换URL:https://hackerone.com/reports/XXXXXX中的XXXXXX从而快速地找到这些漏洞报告

什么IDOR:

IDOR的全称,Insecure Direct Object Reference,中文直译为不安全的直接对象引用。国内更喜欢称之为“越权利用”。

你所理解的IDOR也许是错误的:

其实作者的意思是“你对IDOR的理解太狭隘了”,通常我们会认为IDOR只是寻找一个名为“ID”(或类似)的参数,然后用另一个参数替换这个数字,比如#797685这份报告。

https://hackerone.com/reports/797685

然后接收到的响应Status 200,表示完成了来自不同用户的操作。

https://hackerone.com/reports/797685

其实IDOR远非如此,IDOR并不一定要应用于帐户,或是ID。让我们来更详细地讨论这个误解。

IDOR通常在哪儿发现?

白帽小哥在阅读了这些IDOR漏洞报告后,统计了发现这些漏洞的地方,统计结果如下:

这些这些漏洞发现点的占比分布:

  • REST APIs 31.8%
  • GET parameters 25.8%
  • POST request bodies 21.2%
  • graphQL endpoints 9.1%
  • PUT parameters 4.5%
  • IDs in the request header 3.0%
  • IDs in the cookies 3.0%
  • Misc Query langauges 1.5%

IDOR很容易发现,甚至不需要什么技巧

经常会听到人们表达这种想法,认为IDOR漏洞的挖掘是非常简单的,虽然在技术上IDOR可能确实比大多其它类型的漏洞更简单,但是作者认为我们仍需要学习一些概念来提高IDOR挖掘的成功率,通过Hackerone上TOP10漏洞数据比较,IDOR仍是产生更高回报的漏洞。

Hackerone上按漏洞类型计算的漏洞赏金总额统计

心得要点:

  • 你能找到不是增量的id吗?有时可以通过访问页面或资产中找到ID。

https://hackerone.com/reports/404797

ID可以在Twitter页面的源代码中找到:

https://hackerone.com/reports/181748

  • ID是否以明文形式进行编码?(291721)
  • 无需事先验证,是否可以直接从URL中访问文件/资源?94790, 258260, 230328, 230870, 126861)

图像通常更容易受到以上攻击,见报告258260:

https://hackerone.com/reports/258260

  • 发现类似保护较少的站点,是否可以Bypass?(876300,715054,271393)

主站点的一些备用站点可能包含主站点中曾修补的漏洞,尝试切换不同地区的顶级域名,或在不同的API中寻找:

https://hackerone.com/reports/876300

  • 是否可以通过更改请求方法来获得IDOR,或者漏洞是否涉及使用不同的方法?(204984、199321、297751)

https://hackerone.com/reports/199321

  • ID有时不仅仅是数字,也可能是字符串,有时可以通过修改用户名或电子邮件来利用IDOR(262661、152407、587687)

https://hackerone.com/reports/152407

IDOR有哪些影响?调整你的预期

IDOR可能是获得高权限帐户接管的最简单方法,但是狭隘地看待这个问题,可能会阻止你发现一些不同或较低权限的IDOR漏洞,思考:

  • PII级是否泄露 (293490, 980511, 723461, 668439, 783708, 439729, 152407)

293490报告向我们展示了IDOR如何在响应中导致所有用户电子邮件地址的泄漏:

https://hackerone.com/reports/293490

  • 绕过付款码(391092)

https://hackerone.com/reports/391092

  • 你能用他人帐户操作吗?(1005020,725569,258260)
  • 你能摧毁或破坏任何资产或信息吗?(156537, 264754, 153905, 120115)

摘要/关键点

  • IDOR漏洞比大多数人想象的更为广泛
  • 几乎80%的IDOR都是在REST API、GET参数或POST请求体中找到的,但你仍然应该搜索其他20%的IDOR
  • 找到IDOR的成功来自于找到它们的创造性方法
  • 你的目标不要总放在试图找到P1级的漏洞上

今天的分享就是这些,如果觉得不错,请分享给更多喜爱的朋友~