hacktricks/pentesting-web/idor.md
2023-08-03 19:12:22 +00:00

8 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

文章来源 https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489

寻找IDOR的意想不到的地方

不要忽视编码和哈希ID

当面对编码的ID时可以尝试使用常见的编码方案对编码的ID进行解码。

如果应用程序使用了哈希/随机ID请查看ID是否可预测。有时应用程序使用产生不足熵的算法因此在仔细分析后实际上可以预测ID。在这种情况下尝试创建一些帐户以分析这些ID是如何创建的。您可能能够找到一个模式从而可以预测属于其他用户的ID。

此外可能可以通过另一个API端点、应用程序中的其他公共页面其他用户的个人资料页面等或通过引用者的URL泄漏随机或哈希ID。

例如我曾经发现一个API端点允许用户通过哈希对话ID检索详细的直接消息。请求看起来有点像这样

GET /api_v1/messages?conversation_id=SOME_RANDOM_ID

这乍一看似乎没问题因为_conversation_id_是一个长的、随机的、包含字母和数字的序列。但后来我发现实际上只要知道用户的用户ID就可以找到他们的每个对话的列表

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

这将返回属于该用户的_conversation_ids_列表。而_user_id_在每个用户的个人资料页面上是公开可见的。因此您可以通过首先在其个人资料页面上获取他们的user_id然后检索属于该用户的conversation_ids列表最后通过API端点/api_v1/messages加载消息来阅读任何用户的消息

如果你猜不到,试着创建它

如果对象引用ID似乎不可预测请尝试查看是否有办法来操纵这些对象ID的创建或链接过程。

即使应用程序没有要求也要提供一个ID

如果应用程序生成的请求中没有使用ID请尝试将其添加到请求中。尝试添加_id、user_id、message_id或其他对象引用参数并查看它是否对应用程序的行为产生影响。

例如,如果此请求显示您的所有直接消息:

GET /api_v1/messages

这个呢?它会显示其他用户的消息吗?

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

HPPHTTP参数污染

HPP漏洞为同一参数提供多个值也可能导致IDOR。应用程序可能不会预料到用户会提交同一参数的多个值通过这样做您可能能够绕过在端点上设置的访问控制。

虽然这似乎很少见,我以前从未见过这种情况发生,但从理论上讲,它会像这样。如果此请求失败:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

以下是关于黑客技术的一本书中的内容。以下内容来自文件/hive/hacktricks/pentesting-web/idor.md。将相关的英文文本翻译成中文并保持完全相同的markdown和html语法。不要翻译代码、黑客技术名称、黑客术语、云/SaaS平台名称如Workspace、aws、gcp...、泄漏一词、渗透测试和markdown标签。此外请不要添加任何额外的内容只需提供翻译和markdown语法即可。

GET /api_v1/messages?user_id=YOUR_USER_ID&user_id=ANOTHER_USERS_ID

或者这样:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID&user_id=YOUR_USER_ID

或者将参数提供为列表:

GET /api_v1/messages?user_ids[]=YOUR_USER_ID&user_ids[]=ANOTHER_USERS_ID

盲目IDORs

有时容易受到IDOR攻击的端点不会直接回应泄露的信息。它们可能会导致应用程序在其他地方泄露信息在导出文件、电子邮件甚至文本提醒中。

更改请求方法

如果一个请求方法不起作用还有很多其他方法可以尝试GET、POST、PUT、DELETE、PATCH...

一个常见的技巧是将POST替换为PUT或反之亦然相同的访问控制可能没有被实施

更改请求的文件类型

有时切换请求文件的文件类型可能会导致服务器以不同的方式处理授权。例如尝试在请求URL的末尾添加.json并观察发生了什么。

如何增加IDOR的影响力

首先处理关键IDOR

首先在关键功能中寻找IDOR。基于写入和读取的IDOR都可能具有很高的影响力。

在改变状态写入的IDOR方面密码重置、密码更改、帐户恢复IDOR通常具有最高的业务影响力。例如与“更改电子邮件订阅设置”IDOR相比。

至于非状态更改读取的IDOR寻找处理应用程序中敏感信息的功能。例如寻找处理直接消息、敏感用户信息和私人内容的功能。考虑应用程序中使用此信息的功能并相应地寻找IDOR。

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥