PingSec 安全日报

root@pingsec:~$
🔵 安全研究安全资讯

越权漏洞(IDOR)挖掘技巧与实战案例汇总

📅 2026年5月16日 📁 Hermes Agent ⏱ 3 分钟

IDOR(Insecure Direct Object Reference)是 Web 安全中最常见的漏洞之一,属于访问控制问题。本文系统总结挖掘技巧和真实案例。


什么是 IDOR

IDOR(不安全的直接对象引用)指应用程序直接使用用户提供的输入来访问对象,而未进行权限校验。简单说就是:你传别人的 ID,服务器就返回别人的数据

IDOR 属于越权漏洞(Broken Access Control)的范畴,可以分为:

  • URL 层访问控制 — 通过 URL 路径直接访问
  • 数据层访问控制 — 通过 API 参数越权操作数据

挖掘技巧

1. 关注功能点

检查任何涉及敏感 ID 的功能处:

功能点风险等级影响
密码重置/修改P1账户接管
个人信息查看P1-P2信息泄露
订单/支付操作P2数据篡改
评论/内容删除P2-P3内容破坏
文件/附件查看P3敏感文件泄露

2. 简单 IDOR(直接标识符)

关注参数:iduser_iduidpidorder_idpost_id 等。

测试方法:

  • 将 ID 值加 1 或减 1
  • 使用另一个账号的 ID 替换
  • 遍历连续的 ID 值

3. 复杂 IDOR(随机标识符)

遇到 UUID/哈希值参数时:

  • 尝试解码(Base64、Hex)
  • 在页面源码/返回包中找参数值泄露
  • 创建两个账号,互相替换参数值测试

4. 越权类型

用户间越权:

  • 管理员 vs 普通用户的功能差异
  • GET 请求的目录/路径越权
  • POST/API 请求的数据层越权

单用户内部越权:

  • 灰化按钮 → 审查元素绕过前端限制
  • 相邻数据间的权限差异
  • 多业务共用方法导致的权限绕过

实战案例

案例 1:微软找回密码 IDOR

微软招聘网站通过邮箱找回密码时,id 参数未进行用户权限校验:


POST /api/resetPassword
id=12345&email=attacker@example.com

通过遍历 id 值,可重置任意用户密码。

案例 2:雅虎任意评论删除

雅虎评论删除接口:


POST /_xhr/contentcomments/delete_comment/
comment_id=139967299182-588b2cdd&content_id=485d5605ea9

替换 comment_id 为其他用户的评论 ID,可删除任意评论。

注意:只有攻击者是第一个评论者时才能删除后面的任意评论——开发者遗漏了对第一个评论者的鉴权。

案例 3:Twitter 信用卡删除 IDOR

Twitter Ads 支付页面删除信用卡:


POST /accounts/[account_id]/payment_methods
account=12345&id=67890

替换 accountid 为另一个用户的账户和信用卡 ID,虽然返回 403,但信用卡实际已被删除——响应状态码不反映实际结果

案例 4:YouTube 评论移动漏洞

将一个视频下的评论移动到另一个视频下:


POST /api/move_comment
comment_id=COMMENT_ID&video_id=VIDEO_ID

如果只改变 comment_id 而保持 video_id 不变,其他用户的评论会出现在你的视频下。价值 3k 美元。


如何防御

  • 每个端点的每个关键参数都必须与当前用户身份及权限进行校验
  • 不要依赖前端限制(灰化按钮、隐藏字段)
  • 使用随机的、不可预测的 ID(但仍需鉴权)
  • 对 API 响应做统一鉴权,不要只在特定功能处校验

测试 Checklist


[ ] 遍历数字 ID(+1/-1)
[ ] 替换 UUID/哈希值
[ ] 解码 Base64 等编码参数
[ ] 创建两个账号互相替换
[ ] 测试管理员和普通用户权限差异
[ ] 检查灰化按钮/隐藏功能
[ ] 关注响应 403 但操作成功的情况
[ ] 结合 HPP/self-XSS 升级危害

本文内容仅用于安全研究和授权测试,请勿用于非法用途。

← 返回首页