IDOR Vulnerability Testing
该技能应在用户提出“检测不安全的直接对象引用”、“查找IDOR漏洞”、“利用访问控制缺陷”、“枚举用户ID或对象引用”或“绕过授权访问其他用户数据”等请求时启用。它提供关于在Web应用程序中检测、利用及修复IDOR漏洞的全面指导方案。
作者
zebbern
分类
其他工具安装
下载并解压到你的 skills 目录
复制命令,发送给 OpenClaw 自动安装:
IDOR 漏洞测试技能
技能概述
IDOR 漏洞测试技能提供系统化的方法来检测和利用 Web 应用中的不安全直接对象引用漏洞,帮助安全测试人员在授权范围内发现访问控制缺陷并提供修复建议。
适用场景
在获得书面授权的安全测试项目中,系统化检测目标应用的 IDOR 漏洞,识别水平越权(用户间数据访问)和垂直越权(普通用户获取管理员权限)问题。
对内部或客户的 Web 应用进行安全审计时,快速定位 API 端点、文件下载功能中的对象引用枚举风险,生成漏洞报告和修复方案。
帮助开发团队理解 IDOR 漏洞的形成原理和检测方法,学习如何正确实现服务器端的访问控制和数据所有权验证。
核心功能
支持数据库对象引用检测(如用户 ID、订单 ID)和静态文件引用检测(如发票 PDF、收据文件),涵盖 URL 参数、请求体、HTTP 方法切换等多种攻击向量。
提供详细的 Burp Suite Intruder 配置指南,支持 Sniper 和 Battering Ram 攻击模式,可批量枚举用户 ID 范围并自动分析响应状态码识别漏洞。
包含 Python/Django 等框架的安全代码示例,演示如何实现正确的访问控制验证、使用间接对象引用以及服务器端数据所有权过滤。
常见问题
什么是 IDOR 漏洞?
IDOR(Insecure Direct Object Reference)是一种访问控制漏洞,当应用直接使用用户提供的标识符(如 ID、文件名)来访问数据库记录或文件时,攻击者可以通过修改这些标识符访问其他用户的资源。例如,将自己的用户 ID 从 1001 改为 1000 就能查看另一个用户的资料。
如何使用 Burp Suite 测试 IDOR?
首先配置浏览器代理通过 Burp Suite,使用测试账号登录并访问包含对象 ID 的页面。在 Proxy 标签页拦截请求后,将 ID 参数设置为 payload 位置,发送到 Intruder 模块。配置数字类型 payload(范围 1-10000),启动攻击后分析响应状态码,200 状态码可能表示存在 IDOR 漏洞。
为什么我的测试请求都返回 403?
如果所有请求都返回 403 Forbidden,说明服务器实现了基本的访问控制。可以尝试以下绕过方法:切换 HTTP 方法(从 GET 改为 POST/PUT)、添加 X-Original-URL 头、使用参数污染(?id=1001&id=1000)、URL 编码变体,或者测试未认证端点和 API 版本差异。
UUID 能防止 IDOR 吗?
UUID 比顺序 ID 更难枚举,但不能完全防止 IDOR。可以通过分析响应体、JavaScript 文件、列表 API 接口来获取有效的 UUID,或者使用时间戳预测 UUID v1。正确的防护还是在服务器端验证请求用户对所请求资源的所有权。
IDOR 测试需要几个测试账号?
至少需要两个有效账号:一个"攻击者"账号用于发起请求,一个"受害者"账号用于确认是否能够访问其数据。两个账号可以验证水平越权;如果需要测试垂直越权,还需要一个管理员账号来识别管理员角色 ID。
如何修复检测到的 IDOR 漏洞?
修复 IDOR 的核心原则是服务器端必须验证当前用户对所请求资源的所有权。不要使用客户端提供的 ID 直接查询数据库,而应该使用当前会话的用户 ID 进行过滤。例如,查询地址时使用 Address.objects.filter(user=request.user, id=address_id) 而不是直接 Address.objects.get(id=address_id)。