# 如何用BurpSuite实现越权漏洞IDOR的自动发现识别 ## 一、IDOR漏洞概述 **不安全的直接对象引用**(Insecure Direct Object Reference,IDOR)是OWASP Top 10中的经典漏洞类型。攻击者通过修改请求参数(如用户ID、订单号等)直接访问未授权资源,典型场景包括: - 用户A通过修改URL中的`user_id=1001`访问用户B的数据 - 通过递增发票编号`/invoice/12345`获取他人票据 - 未验证权限的API接口返回敏感数据 ## 二、BurpSuite自动化检测原理 BurpSuite通过以下机制实现IDOR自动化检测: 1. **流量代理**:拦截所有HTTP请求/响应 2. **参数标记**:识别潜在的可控参数(数字、GUID等) 3. **变异测试**:自动修改参数值并重放请求 4. **差异分析**:对比响应内容判断越权可能 ## 三、具体操作步骤 ### 3.1 环境准备 ```bash # 所需工具 - BurpSuite Professional 2023+ - 测试目标:DVWA/vulnerable-api - 浏览器配置代理:127.0.0.1:8080
启动代理监听
爬取目标站点
# 使用Burp Spider自动爬取 Target > Site map > Right click > Spider this host
启用Scanner模块
拦截包含ID参数的请求:
GET /api/userinfo?uid=1001
发送至Intruder > Positions:
GET /api/userinfo?uid=§1001§
设置Payload类型:
添加Grep-Match规则:
// 标记敏感字段用于差异比对 "email":".+@.+\\..+", "phone":"\\d{11}"
安装扩展:
配置检测逻辑:
# 以低权限用户(如user)登录后 # 插件自动用高权限账户(如admin)重放请求
检查响应差异:
人工确认步骤:
Burp Scanner报告示例:
<issue> <severity>High</severity> <confidence>Certain</confidence> <detail> 通过修改uid参数可越权访问用户数据 [请求对比] uid=1001 vs uid=1002 [响应差异] 手机号、地址字段不同 </detail> </issue>
当遇到防御措施时,可尝试:
编码混淆:
# 原始ID:1001 → 变异为: HEX:0x3e9 Base64:MTAwMQ== URL编码:%31%30%30%31
参数移位: “`http
GET /api/data?id=1001
# 修改为 GET /api/data/1001 POST /api/data {“id”:1001}
3. **时间延迟**: ```java // 在Intruder中添加随机延迟(300-500ms) Thread.sleep(random.nextInt(200) + 300);
服务端措施:
// 强制权限验证 function getOrder($order_id) { if ($_SESSION['user_id'] != Order::owner($order_id)) { throw new ForbiddenException(); } // ... }
替代方案:
监控方案:
-- 审计日志记录异常访问 INSERT INTO access_log VALUES (NOW(), 'uid=1001->1002', '403');
BurpSuite的自动化检测可覆盖70%以上的基础IDOR漏洞,但需注意: - 结合手动测试验证关键业务流 - 定期更新ID生成规则字典 - 关注API GraphQL等新型接口
本文测试方法仅限授权环境使用,未经授权的测试属于违法行为。 “`
该文档包含: - 技术原理说明 - 分步骤操作指南 - 实际配置示例 - 防御方案建议 - 符合Markdown语法规范 - 字数约1250字
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。