关于 mitm-find-auth
用于检查 mitmproxy 流量记录中身份验证问题的安全测试技能,面向安全测试人员。它按漏洞类型和严重程度梳理可疑流程,并提供发现记录格式。
主要功能
- 01扫描流量中的身份验证模式
- 02检查重置令牌行为
- 03检查角色与访问控制
- 04分析会话和 JWT
- 05按严重程度整理发现
适用场景
- 01审查捕获的登录与退出流程
- 02检查密码重置请求
- 03验证角色是否可被修改
- 04检查退出后令牌是否仍有效
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ instavm/ security-skills --skill mitm-find-auth安装后在 Claude Code 中输入/mitm-find-auth确认已加载。
详细介绍
查找身份验证漏洞
分析 mitmproxy dump(log.txt),查找以下对象的身份验证问题:$ARGUMENTS
要求:当前目录中需要有
log.txt。如果文件不存在,请先捕获流量:mitmdump --set flow_detail=3 2>&1 | tee log.txt
高价值身份验证模式(来自 783 份真实 HackerOne 漏洞赏金报告)
1. 密码重置令牌问题
漏洞赏金中的真实示例:
- 更改邮箱后,重置链接仍未过期
- 重置令牌可重复使用多次
- 更改密码后,重置令牌仍然有效
- 重置令牌可预测或按序排列
搜索模式:
grep -iE '(reset|forgot|recover|password).*token' log.txt
grep -iE 'token=[a-zA-Z0-9]{10,}' log.txt
2. 通过角色篡改提升权限
真实示例:
- 在请求中将
role=user改为role=admin - 将
isAdmin=false改为isAdmin=true - 使用用户令牌访问管理端点
- 以其他管理员的名义发送邀请
搜索模式:
grep -iE '(role|permission|privilege|isAdmin|is_admin|user_type|account_type)[=:]["'\'']?\w+' log.txt
3. 禁用后仍可评论或执行操作
真实示例:
- 视频禁用评论后仍可编辑评论
- 账号被封停后仍可执行操作
- 权限被撤销后仍可访问资源
搜索模式:
grep -iE '(edit|update|delete|modify).*comment' log.txt
grep -iE 'action=(edit|delete|update)' log.txt
4. 文件/资源访问控制
真实示例:
- 私有文件经转换后变为公开文件
- 未经授权即可访问发票文档
- 通过可预测的 URL 下载私有附件
搜索模式:
grep -iE '(download|file|document|attachment|invoice|receipt)' log.txt
grep -iE '\.(pdf|doc|xlsx?|csv)' log.txt
5. 会话/令牌漏洞
检查模式:
- Session token in URL (session_id=xxx in query params)
- JWT with weak/no signature (alg: none attack)
- Token doesn't change after password change
- Token valid after logout
- Predictable session tokens
搜索模式:
grep -iE 'session[_-]?(id|token)=' log.txt
grep -oE 'eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]*' log.txt # JWT
漏洞类别与严重程度
| 类别 | 严重程度 | 检查内容 |
|---|---|---|
| 未经身份验证即可访问管理员功能 | 严重 | 无令牌时管理端点仍返回 200 |
| 密码重置令牌滥用 | 高 | 不会过期/失效的令牌 |
| 权限提升 | 高 | 可被篡改的角色参数 |
| 会话固定 | 高 | URL 中包含会话 ID、令牌不变 |
| 敏感端点缺少身份验证 | 高 | 未经身份验证即可访问个人身份信息/财务数据 |
| 通过身份验证上下文触发 IDOR | 中 | 以其他用户身份执行操作 |
| 令牌熵弱 | 中 | 过短或可预测的令牌 |
| 通过篡改响应绕过身份验证 | 中 | 客户端身份验证检查 |
测试方法
第 1 步:绘制身份验证流程
# Find login/auth endpoints
grep -iE '(login|signin|authenticate|oauth|token|session)' log.txt
# Find logout endpoints
grep -iE '(logout|signout|revoke)' log.txt
# Find password flows
grep -iE '(password|reset|forgot|recover|change)' log.txt
第 2 步:分析令牌结构
# Extract bearer tokens
grep -oE 'Bearer [a-zA-Z0-9._-]+' log.txt | sort -u
# Extract cookies
grep -oE 'Cookie:.*' log.txt | head -20
# Check for JWT
grep -oE 'eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+' log.txt
第 3 步:测试令牌有效性
# Test if token works after logout (replay attack)
curl -H "Authorization: Bearer OLD_TOKEN" "https://target.com/api/profile"
# Test with modified role
curl -X POST "https://target.com/api/update" -d '{"role":"admin"}'
# Test admin endpoint with user token
curl -H "Authorization: Bearer USER_TOKEN" "https://target.com/api/admin/users"
第 4 步:检查密码重置流程
# Test reset token reuse
curl "https://target.com/reset?token=USED_TOKEN"
# Test reset token after email change
# (token from old email should be invalid)
真实攻击场景
场景 1:通过重置令牌接管账号
1. Attacker requests password reset for victim
2. Victim changes email before using reset link
3. Old reset link still works → Attacker takes over account
场景 2:通过篡改请求提升权限
1. User captures their profile update request
2. Adds "role": "admin" or "isAdmin": true
3. Server doesn't validate, grants admin access
场景 3:通过重放操作触发 BOLA
1. User A creates comment on their post
2. User B captures edit request: POST /edit_comment?id=123
3. User B replays with different comment_id → edits User A's comment
输出格式
## AUTH Finding: [Brief Description]
**Endpoint**: `METHOD https://target.com/path`
**Type**: [Password Reset|Privilege Escalation|Session|Access Control]
**Severity**: [CRITICAL|HIGH|MEDIUM|LOW]
**Vulnerable Flow**:
1. Step one
2. Step two
3. Exploit step
**Evidence**:
[Request/response snippets]
**Impact**:
- Account takeover
- Unauthorized access
- Data exposure
**Test Command**:
curl -X METHOD 'https://target.com/...' -H '...'
**Remediation**:
- Invalidate tokens on sensitive actions
- Server-side role validation
- Rate limit sensitive endpoints
可忽略的误报
- 有意设置为无需身份验证的公开端点
- 只读的公开数据端点
- 健康检查/状态端点
- 静态资源端点
- 对无效令牌返回通用错误的端点
评论
支持 Markdown