不安全且直接的对象引用 (Insecure Direct Object References)
不安全且直接的对象引用 (IDOR) 是一种安全漏洞。当应用程序允许用户基于用户提供的输入直接访问或修改对象(如文件、数据库记录或 URL),且缺乏足够的访问控制时,就会发生这种漏洞。这意味着如果用户在 URL 或 API 请求中更改参数值(如 ID),他们可能能够访问或处理未被授权查看或修改的数据。
摘要 (Summary)
工具 (Tools)
- PortSwigger/BApp Store > Authz
- PortSwigger/BApp Store > AuthMatrix
- PortSwigger/BApp Store > Autorize
方法论 (Methodology)
IDOR 代表不安全且直接的对象引用。这是一种安全漏洞,当应用程序根据用户提供的输入提供对对象的直接访问时就会产生。因此,攻击者可以绕过授权,直接访问系统中的资源,从而可能导致未经授权的信息泄露、修改或删除。
IDOR 示例:
想象一个 Web 应用程序,允许用户通过点击链接 https://example.com/profile?user_id=123 来查看自己的个人资料:
在这里,user_id=123 是对特定用户个人资料的直接引用。如果应用程序没有正确检查登录用户是否有权查看与 user_id=123 关联的个人资料,攻击者只需更改 user_id 参数即可查看其他用户的个人资料:

数值型参数 (Numeric Value Parameter)
增加和减少这些值以访问敏感信息。
- 十进制值:
287789,287790,287791, ... - 十六进制值:
0x4642d,0x4642e,0x4642f, ... - Unix 时间戳:
1695574808,1695575098, ...
示例:
常见标识符参数 (Common Identifiers Parameter)
一些标识符是可以猜测的,如姓名和电子邮件,它们可能会授予您访问客户数据的权限。
- 姓名:
john,doe,john.doe, ... - 电子邮件:
john.doe@mail.com - Base64 编码值:
am9obi5kb2VAbWFpbC5jb20=
示例:
弱伪随机数生成器 (Weak Pseudo Random Number Generator)
- UUID/GUID v1 如果你知道它们的创建时间,是可以预测的:
95f6e264-bb00-11ec-8833-00155d01ef00 - MongoDB 对象 ID 是以可预测的方式生成的:
5ae9b90a2c144b9def01ec37- 一个代表 Unix 时间戳(秒)的 4 字节值
- 一个 3 字节的机器标识符
- 一个 2 字节的进程 ID
- 一个 3 字节的计数器,以随机值开始
示例:
哈希型参数 (Hashed Parameter)
有时我们会看到网站使用哈希值来生成随机用户 ID 或令牌,例如 sha1(username), md5(email), ...
- MD5:
098f6bcd4621d373cade4e832627b4f6 - SHA1:
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 - SHA2:
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
示例:
通配符参数 (Wildcard Parameter)
发送通配符(*, %, ., _)而不是 ID,某些后端可能会返回所有用户的数据。
GET /api/users/* HTTP/1.1GET /api/users/% HTTP/1.1GET /api/users/_ HTTP/1.1GET /api/users/. HTTP/1.1
IDOR 技巧 (IDOR Tips)
- 更改 HTTP 请求:
POST → PUT - 更改内容类型:
XML → JSON - 将数值转换为数组:
{"id":19} → {"id":[19]} - 使用参数污染:
user_id=hacker_id&user_id=victim_id
实验环境 (Labs)
参考资料 (References)
- 从区块链中的圣诞礼物到巨额漏洞赏金 - Jesse Lakerveld - 2018年3月21日
- 如何操作:发现 IDOR(不安全且直接的对象引用)漏洞以获得高额赏金 - Sam Houton - 2017年11月9日
- 为了乐趣和利润搜寻不安全且直接的对象引用漏洞(第 1 部分) - Mohammed Abdul Raheem - 2018年2月2日
- IDOR - 如何预测标识符?漏洞赏金案例研究 - 漏洞赏金报告解读 - 2023年9月21日
- 预防不安全且直接的对象引用速查表 - OWASP - 2023年7月31日
- 不安全且直接的对象引用 (IDOR) - PortSwigger - 2019年12月25日
- IDOR 测试 - PortSwigger - 2024年10月29日
- 不安全且直接的对象引用测试 (OTG-AUTHZ-004) - OWASP - 2014年8月8日
- IDOR 的兴起 - HackerOne - 2021年4月2日
- Web 到 App 手机通知 IDOR 以查看所有人的 Airbnb 消息 - Brett Buerhaus - 2017年3月31日