1. 越权漏洞实战解析与Burpsuite靶场通关指南越权漏洞Broken Access Control长期占据OWASP Top 10安全风险前三名我在渗透测试项目中遇到的90%系统都存在这类问题。Burpsuite官方靶场作为业界公认的实战训练场其越权漏洞场景设计极具代表性。下面分享我通关全部越权关卡的完整思路和避坑经验。注意所有测试仅限授权环境进行实际操作前请确保获得合法授权1.1 越权漏洞核心原理越权漏洞本质是系统对用户权限校验不严格导致低权限用户能执行高权限操作。主要分三类水平越权同权限用户间数据非法访问如A用户查看B订单垂直越权低权限用户执行高权限功能如普通用户删除管理员上下文越权流程步骤绕过如未支付直接跳转收货Burpsuite靶场典型案例GET /api/user/profile?id123 HTTP/1.1 Host: victim.com仅靠前端隐藏按钮远远不够后端必须对每次请求进行身份认证Authentication权限校验Authorization业务规则检查Business Logic1.2 靶场环境配置要点我推荐使用Kali Linux原生环境运行Burpsuite Community 2023.6版本最新版对靶场兼容性最佳。关键配置步骤浏览器代理设置export http_proxyhttp://127.0.0.1:8080 export https_proxyhttp://127.0.0.1:8080Burpsuite证书安装解决HTTPS拦截问题访问http://burp/cert下载cacert.der导入浏览器信任库靶场访问技巧使用隐身模式避免缓存干扰不同关卡建议新建浏览器会话遇到加载问题时可尝试清除localStorage2. 水平越权实战突破2.1 用户ID枚举漏洞靶场第一关演示了典型的水平越权。通过修改URL中的用户ID参数可以查看他人信息。我总结的自动化测试方案使用Intruder模块进行ID爆破GET /api/user?id§1§ HTTP/1.1 Host: target设置Payload为[1-1000]的数字序列关键判断依据响应码200但内容长度不同包含特定关键词如email、address响应时间差异存在用户的数据查询更慢实测技巧设置Grep - Extract捕获返回数据中的邮箱字段可快速定位有效用户2.2 参数混淆攻击靶场第五关展示了更隐蔽的越权方式。请求中同时存在明文ID和加密tokenPOST /update_profile HTTP/1.1 { user_id: 1024, token: a1b2c3d4, role: user }突破方案先用自己的账号获取正常token修改user_id保持token不变提交观察系统是否仅校验token而忽略ID匹配我编写的检测规则if response.json().get(is_admin) True: log_vulnerability(IDOR via token reuse)3. 垂直越权高阶技巧3.1 Cookie权限提升靶场第九关需要从user升级到admin。通过分析Cookie结构发现sessionbase64(user:1001:roleuser) -- 修改为 sessionbase64(user:1001:roleadmin)实际操作中的注意事项先URL解码再base64解码修改后要重新URL编码某些系统会校验HMAC签名3.2 JWT令牌篡改现代Web应用常用JWT做认证。靶场第十二关的JWT结构{ alg: HS256, typ: JWT } { user: guest, exp: 1735689600 }攻击步骤修改alg为none移除签名验证直接修改user字段为admin删除签名部分保留末尾的.关键点服务器必须配置拒绝none算法才能防御4. 自动化越权检测方案4.1 Burpsuite插件开发我编写的自动检测插件逻辑void checkIDOR(IHttpRequestResponse request){ String url helpers.analyzeRequest(request).getUrl(); if(url.contains(id) || url.contains(user)){ sendToIntruder(request); // 自动发起参数爆破 } }4.2 自定义扫描规则在Burp Scanner中添加以下检查项所有包含ID参数的请求修改后是否返回相同数据结构状态码为200但内容长度变化15%5. 防御方案深度解析5.1 后端校验最佳实践// Spring Security示例 PreAuthorize(#userId principal.id) public User getUser(Long userId){ // 方法实现 }必须实现的防御措施基于角色的访问控制RBAC属性基访问控制ABAC用户上下文绑定如Spring Security的PreAuthorize5.2 日志监控策略建议记录的敏感操作日志CREATE TABLE security_log ( id BIGINT PRIMARY KEY, user_id BIGINT NOT NULL, action VARCHAR(50) NOT NULL, target_id BIGINT, ip_address VARCHAR(45), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) );我在实际项目中总结的越权漏洞防护体系输入验证所有ID参数必须符合[0-9]正则权限校验每个业务操作前检查用户权限输出过滤敏感字段根据权限动态返回日志审计关键操作留痕且不可篡改定期渗透至少每季度进行越权专项测试6. 靶场通关速查表关卡漏洞类型关键参数突破技巧1基础IDORid直接修改数字ID3JSON越权user_id保持cookie修改body5多参数依赖idtoken仅修改id保留有效token7文件名越权file路径遍历文件名猜测9Cookie提权sessionbase64解码修改后重编码12JWT滥用Authorization改alg为none移除签名7. 实战中的疑难问题解决问题1修改参数后返回403但页面依然变化解决方案系统可能采用前端校验使用Burp Repeater直接重放请求问题2JWT修改后服务端报签名错误排查步骤检查是否漏掉末尾的.确认header和payload部分是否完整尝试使用空签名保留最后一个.问题3靶场环境响应缓慢优化方案关闭Burpsuite的被动扫描在Project options中取消Send to Scanner设置Proxy→Options里的线程数为18. 企业级安全加固建议在金融行业项目中我实施的增强方案包括动态权限令牌每次请求生成临时操作令牌行为指纹校验结合IP、设备、操作习惯等多因素验证敏感操作审批关键功能需二级授权实时风控拦截异常请求自动触发验证码某次渗透测试中的典型越权案例POST /transfer HTTP/1.1 { from_account: attacker, to_account: victim, amount: 1000000 }防御方案强制校验from_account必须等于当前会话用户9. 扩展训练资源推荐PortSwigger Academy的Access Control模块OWASP Juice Shop靶场的权限挑战Hack The Box的Access Control类机器我整理的越权漏洞检查清单[ ] 所有包含ID的API接口[ ] 任何接收用户输入的角色字段[ ] 文件下载/查看功能[ ] 业务流程状态参数最后分享一个快速检测越权的curl命令curl -s -H Cookie: sessionattacker http://target/api/user/123 | jq .email