<< All versions
Skill v3.1.0
currentAutomated scan100/100jinyimeng01/mastermind-bug-bounty/exploit
──Details
PublishedOctober 31, 2026 at 01:16 PM
Content Hashsha256:0d64e17cd03336bd...
Git SHA4f2549026d4e
──Files
Files (1 file, 17.2 KB)
SKILL.md17.2 KBactive
SKILL.md · 475 lines · 17.2 KB
name: exploit-agent description: > ★ Exploit + Report: vulnerability exploitation specialist. Covers XSS, SQLi, SSRF, IDOR, SSTI, LFI/RFI, RCE, XXE, race conditions, business logic flaws. Enforces FOUND≠CONFIRMED triage gate (6-check), generates PoC chain, and produces 中文 .docx HackerOne/SRC-format reports. Final required phase. metadata: tags: "exploit,xss,sqli,ssrf,idor,ssti,rce,race,business-logic,report,src" category: "offensive-security" skills_used:
- vuln_classes
- race_condition
- websocket_test
version: "3.1.0"
Exploit Agent — 漏洞利用 + 中文报告生成
这是变现阶段。之前所有阶段收集的数据在这里转化为赏金。核心原则: FOUND ≠ CONFIRMED。没有证明危害的漏洞不是漏洞。
0. 数据总汇 (来自前序阶段)
进入 exploit 阶段前,你已经拥有:Recon:□ 目标指纹 (框架/语言/版本/WAF)□ 所有子域名□ JS 文件 + 提取的 API 端点 + _endpoint_params.json□ 源码泄露 (如有)□ 凭据清单 (GitHub/Gitee泄露的邮箱/密码/AK-SK)Dependency Scan:□ 已知 CVE 匹配结果API Fuzz + Data Linkage:□ 全量端点清单 + 参数需求表□ 泄露值池: {userId: [...], token: [...], email: [...], ...}□ 已测试的注入组合及结果□ 无认证可访问端点清单□ Host头注入检测结果Crypto Attack:□ 解密的加密字段 (含新发现的参数和凭据)□ JWT 攻击结果 (alg:none / 密钥破解 / token 伪造)□ 签名算法逆向结果□ JWT↔泛查询闭环结果Bypass:□ 已绕过的 401/403 端点□ OAuth/SSO 攻击结果
1. 测试优先级 (赏金导向)
P0 — 直接拿钱 (优先测试)□ 已知 CVE (dependency scan 命中的)□ 伪造的 admin JWT → 打所有管理接口□ IDOR: 用泄露值池中的 ID 打所有需要 ID 的端点□ 泛查询绕过: categoryId/tenantId置空→全量数据□ SSRF: 所有 url/path/redirect 参数 → 内网/云元数据□ 解密出的凭据 (AK/SK/密码) → 直接利用□ 竞态条件: 优惠券/提现/库存的并发测试 → race_condition□ WebSocket 越权: 篡改 channel/room ID → websocket_test□ 无认证可访问的导出接口 (/export/* /download/*)P1 — 高概率有洞□ SQLi: 所有 search/query/keyword/id 参数 (Phase 3.8)□ SSTI: template/render/content 参数 (Phase 3.8)□ RCE: cmd/exec/run 参数 (Phase 3.8)□ 文件上传: 所有上传接口 → Web shell□ Host头注入: 密码重置接口 → Host碰撞P2 — 需要证明 Impact□ XSS: 必须有链 (cookie steal → session hijack)□ CSRF: 必须有敏感操作 (改密码/转账/绑定)□ CORS: 必须能读到敏感数据P3 — 信息收集 (不单独报)□ 错误信息泄露 → 帮助 P0-P2 利用□ 内部地址泄露 → SSRF 的潜在目标
2. 漏洞利用决策树
参数类型 → 测试方向:id/userId/orderId/orgId → IDOR (先测泄露值池中的 ID)→ SQLi: id=3-1, id=3 AND 1=1 (Phase 3.8)→ NoSQLi: id[$gt]=0, id[$ne]=1categoryId/tenantId/groupId → 泛查询绕过 §23: 置空/置/%→ IDORq/search/keyword/filter → 泛查询+SQLi: ' OR '1'='1' --, UNION SELECT→ XSS: <s>XSS</s> (预检), <img src=x onerror=...>url/redirect/path/file → SSRF: http://127.0.0.1, http://169.254.169.254→ Path traversal: ../../../etc/passwdtemplate/render/content → SSTI: {{7*7}}, ${7*7}, <%= 7*7 %>cmd/exec/run/shell → RCE: ; id, | whoami, `id`, $(whoami)amount/price/quantity → 业务逻辑: 0, -1, 999999→ 竞态条件: 并发使用优惠券/下单file upload → 扩展名绕过: .php.jpg, .phtml, .php%00.jpg→ Content-Type: image/jpeg ← PHP code insideJSON body (@type) → 反序列化: Fastjson/Jackson gadget (Phase 3.8)→ FOUND≠CONFIRMED: 发现Shiro Key→必须URLDNS证明反序列化触发回连
2.5. 垂直越权系统化探测 ★★★
垂直越权是贡献最多严重漏洞的阶段——普通用户Token访问管理API可致全量数据导出、凭证泄露、权限失控。
步骤1: 收集管理API清单
JS/路由/雪瞳中搜索管理关键字:/admin/ /manage/ /system/ /console/ /boss/ /backend//user/ /role/ /perm/ /config/ /settings/ /export/ /sync//audit/ /log/ /order-manage/ /member-admin/从 Phase 1 提取的全量API端点中筛选含上述关键字的路径
步骤2: 按数据泄露风险降序逐条测试
优先级: 导出类 > 列表类 > 凭证配置类 > 用户管理类 > 业务数据类 > 写操作类① 导出/下载类 (最高危 — 一次性全量泄露):*export* *download* *report* *dump*→ 用普通用户Token请求,检查是否返回文件/数据② 列表/查询类 (高危 — 分页可遍历全量):*list* *query* *search* *all*→ 检查响应的 total/count/size/summary 字段③ 邮箱/凭证配置类 (严重 — 可能含明文密码):*email* *mail* *smtp* *config* *settings*→ 检查响应中是否有 password/secret/key/token 字段④ 用户/权限管理类 (高危 — 可创建/修改/删除用户):*user* *role* *permission* *account*⑤ 业务数据类 (中危-高危):*personnel* *staff* *employee* *member* *order* *finance*⑥ 写操作类 (高危 — 可修改/删除数据):*update* *insert* *create* *delete* *remove* *sync*
步骤3: curl 模板
bash
TOKEN="your_user_token"TOKEN_HEADER="Authorization" # 或 token / X-Auth-Token# 导出接口 (最高危)curl -sk -H "${TOKEN_HEADER}: ${TOKEN}" -X GET \"https://TARGET/PREFIX/exportUserList" -o export_result# 列表接口 (关键: 检查 total/count 字段)curl -sk -H "${TOKEN_HEADER}: ${TOKEN}" -X POST \-H "Content-Type: application/json" \-d '{"pageNum":1,"pageSize":5}' \"https://TARGET/PREFIX/user/list"# 配置接口 (检查 password/secret/key/token 字段)curl -sk -H "${TOKEN_HEADER}: ${TOKEN}" -X GET \"https://TARGET/PREFIX/system/config"
步骤4: 如果全部返回403
□ 移除 Content-Type header 重试□ 换 Accept: text/html 或 */* 重试□ POST 空 body {} 重试 (部分网关POST不拦截空body)□ 添加 Origin/Referer 为管理后台域名□ 尝试 GET→POST/PUT/PATCH 方法切换□ 记录 "垂直越权已测试,N个端点,无发现" 到 findings
确认标准
Token 能访问管理接口 → 垂直越权确认(严重)→ 立即提取 total/count/size/summary 判断数据量级→ 对 export 接口→导出文件确认数据泄露量→ 对响应做敏感字段扫描(password/token/key/secret)→ 触发 Phase 3.5: 用管理端点发现的数据回溯其他 Phase
3. FOUND ≠ CONFIRMED — 三级分类 (MANDATORY)
每个发现必须归类:CONFIRMED — 已证明实际危害(以下至少满足其一):✓ 能实际读到不该读的数据 → 具体字段名+数据条数✓ 能实际执行不该执行的操作 → 具体操作+结果✓ 发现的Key能实际利用 → 解密/伪造/登录,至少证明其一→ 进入报告正文,可标等级(高/中/低)PENDING — 检测到异常信号但不能证明危害:✗ 发现Key但无法证明利用("找到硬编码AES密钥"但不知道加密了什么)✗ 路径可访问但每个端点都401/403(Swagger能看文档但全部需要认证)✗ 返回200但data=[](越权路径存在但无数据返回)→ 仅入报告附录A(含未确认原因),不入正文和等级INFO — 发现但无任何可利用路径:✗ 版本号泄露(Server: Apache/2.4.49 — 除非你实际触发了CVE)✗ 无利用链的安全配置缺失(CSP/HSTS单独存在)✗ 静态文件目录列表但只含公开文件→ 仅入报告附录A(安全加固建议)确认3问(每个FOUND后必须回答):① 能实际读到什么不该读的数据?② 能实际执行什么不该执行的操作?③ 发现的Key能实际利用吗?→ 3问全不能 → PENDING。能回答任一 → CONFIRMED
3.1 常见误报模式(以下单项不算漏洞,必须"能利用"才确认)
1. 版本泄露:发现 Server: Apache/2.4.49 / 发现 Spring Boot 版本号→ 不标漏洞。除非你实际触发了CVE或对应版本漏洞→ 单纯知道版本号 = INFO,入附录A2. 路径可访问但实际不可用:/actuator 返回了paths清单但 /actuator/heapdump 403/swagger-ui 可见但每个端点都返回401→ 不标漏洞。确认标准: 至少有一个端点实际返回了敏感数据3. 返回空数组/空数据:越权接口返回200但data=[] / 水平越权但对方数据不存在→ 不标漏洞。确认标准: 实际读到了他人数据,不是空壳4. 安全配置缺失:Cookie 无 HttpOnly/Secure / 无 X-Frame-Options / CORS: ACAO:*→ 不单独标漏洞。必须配合实际攻击场景:无HttpOnly → 必须存在XSS才能利用无X-Frame-Options → 必须能嵌入iframe并诱导点击ACAO:* → 必须实际从恶意域获取到了敏感数据5. 信息泄露(无法用于进一步攻击):错误信息含堆栈但泄露的路径不可用备份文件存在但只包含公开信息→ 确认标准: 泄露的信息能否用于下一步攻击6. 用自己凭证获取自己数据:无session返回"请登录" → 有认证保护有session返回自己的手机号/姓名 → 正常业务→ 必须证明: 用自己的session获取到他人数据,或无session获取到数据
4. ⛔ 非漏洞判定规则(优先级最高)
规则1: 用自己的有效凭证获取自己的信息 = 正常业务流程,非漏洞例: currentAccount / getUserInfo / exportUserInfo 等接口判定标准: 必须证明能获取到他人数据,或无需认证即可获取数据规则2: 接口响应中包含自己的个人信息 ≠ 信息泄露禁止行为: 仅凭"响应中有phone/name/email字段"就标记为信息泄露必须证明: 响应中包含他人信息,或信息可被未授权访问规则3: Token/Session仅用于身份校验且随机生成无法预测/枚举 → 非泄露必须证明: token可被预测/枚举 | 可被第三方窃取 | 可越权访问他人数据规则4: 导出/下载接口仅导出自己的数据 = 正常功能必须证明: 可导出他人数据,或未授权可导出规则5: ⚠️ UI可见性预检 — API返回的数据是否在目标网站页面上已展示?例: getAgentList返回uid/userName → 打开目标站/moreAssistant页面→ 页面已展示创作者名 → 这些字段是公开业务数据 → 跳过标记判定: 打开目标站前面对比API响应字段 vs UI展示内容
5. Impact 证明标准 (Triage Gate — 6 Check)
每个 finding 必须通过6个检查:☐ 1. has_target — URL/端点明确☐ 2. has_vuln_class — 漏洞类型已识别 (IDOR/SQLi/SSRF/...)☐ 3. has_evidence — 检测证据可复现 (request+response原文)☐ 4. impact_demonstrated (HARD GATE) — 已证明实际危害□ 读到了什么不该读的数据?→ 具体字段 + 数据条数 + 敏感程度→ 例: "读取了12,340条用户记录,含手机号和密码哈希"□ 执行了什么不该执行的操作?→ 操作 + 结果 + 权限要求→ 例: "以普通用户身份删除了管理员账号"□ 影响了谁?→ 自己 / 其他用户 / 所有用户 / 系统☐ 5. confidence ≥ 0.70 — 置信度达标☐ 6. data_not_public — API返回的数据未在前端UI公开展示→ 必须打开目标网站对应前端页面对比确认未通过 → PENDING_CONFIRMATION (不入正文)通过 → CONFIRMED → POC Generation → Proof Capture → 中文报告
6. 数据联动闭环 (发现后不停止)
确认漏洞后立即执行:1. 新拿到的数据 → 提取字段名+值 → 回写 data_linkage 值池2. 新 token/凭据 → 所有端点重测 (尤其是之前 401/403 的)3. 新发现的内部路径 → GitHub/Gitee 源码泄露搜索4. 新发现的参数名 → 在所有已知端点测试该参数示例链:IDOR 读到 userId=1 的 email=admin@target.com→ email 用于登录接口爆破 / 密码重置接口→ JWT 爆破成功拿到 admin token→ admin token 打管理接口 → 发现用户导出接口→ 导出全量用户数据 → 包含更多 userId 和 PII→ 更多的 userId → 扩大 IDOR 范围
7. SRC 合规规则
操作分级
TIER 1 — 允许(常规测试):□ 手工发包(每次≤1个)□ 用自己2个测试账号互操作□ IDOR: 读≤5条他人数据作为proof□ 响应链式挖掘TIER 2 — 谨慎(需注意):□ 伪造成他人的正常业务请求(如: 用自己的Token+他人的userId)□ 密码重置接口测试(仅用自己的邮箱)□ 文件上传测试(上传无害标识文本)TIER 3 — 禁止:□ SQLmap / 自动化扫描器□ 批量拉取(>5条)□ SQL爆表/SSRF扫内网□ 删/改真实用户数据□ alert()弹窗测XSS → 用<s>XSS</s>+console.log替代
SRC合规声明(报告必须包含):
本次安全测试声明:1. 测试仅在授权范围内进行2. 未对目标系统正常业务造成影响3. 越权测试数据获取量控制在≤5条作为证明4. 仅使用自行注册的测试账号进行互操作验证5. 未使用自动化扫描工具(SQLmap等)6. 未删除/修改真实用户数据7. 发现的所有敏感数据在测试完成后已本地销毁
8. XSS 预检两步法 (MANDATORY — 禁止使用 alert())
Step 1: 注入 <s>XSS</s>→ 渲染为删除线 = HTML被解释→ 显示原文 = 被转义Step 2 (Step 1通过后): 注入 <img src=x onerror="console.log('xss')">→ F12 Console 检查日志→ 出现 'xss' 日志 = XSS确认原因: alert()阻塞UI,存储型XSS会触发每个访问用户
9. 报告生成 (中文 .docx — MANDATORY)
生成前强制步骤
1. 加载 references/report-template.md — 必须已读入上下文2. 对照 report-template.md 的 "每条漏洞必须包含(8项)" 逐条确认3. 对照 report-template.md 的 "整份报告必须包含(4项)" 逐条确认4. curl命令必须自包含真实值: 单行(禁止\续行)、无占位符、无注释禁止引用本地文件作为主复现方式5. 每个curl生成后 → Bash实际执行一次 → 确认200且含预期数据 → 截图6. 泄露字段清单表必须有(每漏洞一个表格:字段名/含义/敏感等级)7. gen_report.py必须放 scripts/子目录,禁止放目标根目录8. 生成后验证: dir output/{target}/reports/*.docx 必须返回至少1个文件
报告结构(对齐京东/讯飞/阿里/补天SRC标准)
封面 — 报告日期 / 漏洞类型 / 自评等级 / 目标站点 / 提交平台目标系统画像 — IP/Web服务器/WAF/SSL证书/前端框架/已发现API清单/路由表完整攻击链路图 — ASCII流程图 展示所有漏洞的因果链一、漏洞信息 — 名称/URL/类型/等级/受影响资产/测试账号 + 漏洞描述(名称格式: 越权访问 (IDOR) — 双语标注)二、漏洞证明 — 复现环境 + 完整HTTP请求/响应原文 + 可复制curl + 截图列表三、漏洞危害 — 具体泄露数据量(数字,不是"大量") + 受影响用户量级 + 攻击场景四、修复方案 — P0(立即)/P1(高优)/P2(中优)分级, 每条含具体接口路径五、漏洞汇总表 — ID/名称/等级/接口/状态 一览表只有CONFIRMED入正文,PENDING+INFO仅入附录A六、SRC合规声明 — 见§7格式: python-docx生成.docx输出: output/{target}/reports/语言: 中文全文(技术术语保留英文,漏洞名称双语标注)
评级速查
IDOR列表端点 (getuserlist, */list, */all等一请求返回全量) → 直接高危/严重(但仅返回自己数据=正常业务)IDOR单资源端点 (?userId=xxx需遍历) → ID可枚举=中危/高危, 不可枚举=低危/中危(但仅查到自己的数据=正常业务)静态文件/模板可访问但内容无敏感数据 → 低危/无 (Quick-Filter)未授权接口但无法证明可访问实际数据 → 低危 (Impact>Detection不满足)内部地址/SSO域名泄露无后续利用链 → 低危→ 完整评级标准见 references/rating-standard.md (阿里SRC 5-level)
10. 阶段输出
output/{target}/├── reports/│ ├── {finding_id}.docx # ★ 每个确认漏洞的中文报告│ ├── summary.docx # ★ 汇总报告(中文)│ └── appendix_a.md # PENDING+INFO项附录├── findings/│ ├── _approved.json # CONFIRMED — 通过Triage的漏洞│ ├── _pending.json # PENDING — 待确认的漏洞│ └── evidence/ # curl命令 + 截图 + 响应体├── scripts/│ └── gen_report.py # python-docx报告生成脚本└── poc/└── {finding_id}/ # 每个漏洞的PoC脚本(补充附件)