mcpField
M
mitm-find-idor

mitm-find-idor

github.com/instavm安全8774 次安装13 周前更新
代码仓库

关于 mitm-find-idor

此安全技能分析 mitmproxy 流量记录中的不安全直接对象引用(IDOR)漏洞,识别可疑对象引用,并提供授权测试和影响评估的报告格式。

主要功能

  1. 01查找路径和请求中的对象引用
  2. 02识别常见 ID 编码模式
  3. 03指导授权与影响检查
  4. 04按端点和严重程度整理发现

适用场景

  1. 01检查捕获流量中的 IDOR 候选项
  2. 02测试是否能访问其他用户的资源

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/instavm/security-skills --skill mitm-find-idor

安装后在 Claude Code 中输入/mitm-find-idor确认已加载。

详细介绍

查找 IDOR 漏洞

分析 mitmproxy 转储文件(log.txt),查找以下方面的 IDOR 漏洞:$ARGUMENTS

需要:当前目录中存在 log.txt。如果没有,请先捕获流量:

mitmdump --set flow_detail=3 2>&1 | tee log.txt

高价值 IDOR 模式(来自 132 份真实 HackerOne 漏洞赏金报告)

1. 用户/账户对象引用
user_id, userId, user-id, uid, account_id, accountId
customer_id, customerId, member_id, memberId
profile_id, owner_id, creator_id, author_id

真实示例:https://zomato.com/gold/payment-success?subscription_id=XXX&user_id=YYY

2. 资源对象引用
order_id, orderId, booking_id, bookingId, reservation_id
transaction_id, txn_id, payment_id, invoice_id
document_id, doc_id, file_id, attachment_id
report_id, ticket_id, case_id, issue_id

真实示例:/api/shopify/orders/{order_id}——更改 order_id 以访问其他订单

3. 组织对象引用
project_id, projectId, team_id, teamId, group_id, groupId
workspace_id, org_id, organization_id, company_id
board_id, channel_id, room_id, space_id

真实示例:PUT /boards/{board_id}.json——访问 GitLab 私有项目标签

4. 内容对象引用
media_code, media_id, image_id, video_id, asset_id
post_id, postId, comment_id, message_id, thread_id
article_id, content_id, item_id, entry_id

真实示例:media_code=2013124——连续 ID 会暴露其他用户的媒体内容

5. 会话/令牌引用(影响重大)
session_id, sessionId, subscription_id, subscriptionId
card_id, cardId, fuel_card_id, membership_id
api_key_id, token_id, credential_id

真实示例:activateFuelCard?id=XXX——枚举 Uber 司机 UUID

要解码的 ID 编码模式

模式示例解码方法
Base64 数字MTIzNDU2echo MTIzNDU2 | base64 -d → 123456
十六进制0x1E240转换为十进制 → 123456
UUID v1包含时间戳提取时间戳部分
短哈希a1b2c3可能是连续数字经 MD5 截断后的结果
补零000012345去掉前导零后递增

在哪里查找 IDOR

URL 路径参数(最常见)
/api/v1/users/{id}/profile
/api/v1/orders/{id}/details
/api/v1/documents/{id}/download
/campaign-manager-api/accounts/{id}
查询参数
?user_id=12345&action=view
?subscription_id=XXX&user_id=YYY
?media_code=2013124
请求正文(JSON/表单)
{"user_id": 12345, "action": "delete"}
{"board": {"id": 857058, "labels": [{"id": 123}]}}
标头(少见但影响重大)
X-User-Id: 12345
X-Account-Id: 67890

严重性评级

访问类型严重性示例
读取其他用户的 PII严重查看电子邮件、电话、地址
修改其他用户的数据高编辑个人资料、删除内容
访问其他用户的订单/交易高查看订单历史记录、支付信息
读取其他用户的私密内容中查看私密帖子、文档
枚举用户是否存在低确认 user_id 是否存在
访问近乎公开的数据信息查看订阅日期

测试方法

步骤 1:识别候选参数

在流量中搜索 ID 模式:

grep -iE '(user|account|order|session|subscription|member|card|document|file|project|team|group)[-_]?id' log.txt
步骤 2:检查 ID 是否连续/可预测
# Extract numeric IDs and check if sequential
grep -oE 'id[=:]["'\'']?[0-9]+' log.txt | sort -u
步骤 3:测试授权
# Test with ID ± 1
curl -H "Cookie: victim_session" "https://target.com/api/resource/12345"
curl -H "Cookie: victim_session" "https://target.com/api/resource/12344"  # Another user's
步骤 4:验证影响
  • 响应是否包含其他用户的数据?
  • 你能否对其他用户的资源执行操作(编辑/删除)?
  • 暴露了哪些敏感字段?

输出格式

针对每项发现,请报告:

## IDOR Finding: [Brief Description]

**Endpoint**: `METHOD https://target.com/path`
**Parameter**: `param_name` in [path|query|body]
**ID Type**: [Sequential|Base64|UUID|Hash]
**Current Value**: `12345`
**Severity**: [CRITICAL|HIGH|MEDIUM|LOW]

**Evidence**:
[Show request/response snippets]

**Impact**:
- What data is exposed
- What actions can be performed

**Test Command**:
curl -X METHOD 'https://target.com/...' -H 'Cookie: ...'

**Remediation**:
- Implement proper authorization checks
- Use indirect references (mapping table)
- Validate user owns the resource

可忽略的误报

  • 分析/跟踪端点(仅写入,不返回数据)
  • 公开内容 ID(电影 ID、产品目录)
  • 无论是否授权,都会返回相同数据的资源 ID
  • 需要有效会话且对非所属用户返回 403 的 ID

评论

支持 Markdown