关于 hunt-exceptional-conditions
用于发现应用详细错误信息泄露和失效开放行为的安全技能。它引导测试者逐项改变输入假设,并从响应正文确认泄露,而非仅凭状态码判断。
主要功能
- 01探测意外的数据类型和格式
- 02检查响应正文中的错误细节
- 03识别各框架的泄露特征
- 04记录泄露路径、版本和堆栈帧
适用场景
- 01测试 JSON API 的类型字段
- 02检查数字和搜索参数
- 03审查格式错误的上传请求
- 04验证可疑服务器错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ elementalsouls/ claude-bughunter --skill hunt-exceptional-conditions安装后在 Claude Code 中输入/hunt-exceptional-conditions确认已加载。
详细介绍
HUNT-EXCEPTIONAL-CONDITIONS — 详细错误 / 故障开放(A10:2025)
实际有价值的发现
设计良好的应用会捕获错误,并返回简洁、通用的消息。出现故障的应用在收到意料之外的输入时,会抛出未处理的异常,并直接向客户端显示开发者错误页面——泄露堆栈跟踪、ORM/查询内部信息、服务器端文件路径以及框架/库版本。这类信息泄露就是发现结果(也会为后续的 SQLi/RCE/路径攻击提供助力)。
信息探测
任何解析输入的端点都可能存在问题;信息最丰富的端点包括:
JSON APIs that expect typed fields: POST /api/* with {numbers, ids, enums}
Endpoints with numeric/id path or query params: /item/{id}, ?page=, ?quantity=
Search / filter / sort params
File or content-type sensitive uploads
攻击 — 发送代码未预料到的内容
使用已知正常的请求,每次只破坏一个假设:
- **类型错误:**应用期望某个字段为数字/字符串,却收到数组或对象——
{"rating":"x","comment":[1,2,3]}、{"quantity":{}}。 - **格式错误的请求体:**被截断的/!无效 JSON、未闭合的字符串、多余的花括号,或错误/缺失的 Content-Type。
- **边界值/超大值:**超长字符串、极大/负数/溢出值。
- 值中嵌入的空字节/控制字符。
POST /api/Feedbacks {"rating":"notanumber","comment":[1,2,3]}
GET /item/' OR /item/%00 (also exercises the error path)
检查响应正文,而不只是状态码:500(甚至 200/400)响应的正文中若包含堆栈跟踪或框架错误页面,就是信号。
哪些情况算信息泄露(成功信号)
当响应正文包含跨框架的错误信息泄露特征时,即确认发现:
- Node/Express + Sequelize:
SequelizeDatabaseError、node_modules/sequelize,或包含内部路径的 JS 堆栈。 - PHP:
<b>Warning</b> ... /var/www/.../file.php on line N。 - Python:
Traceback (most recent call last)、werkzeug.exceptions。 - Java:
at com.app.Foo(Foo.java:42)堆栈帧。 - .NET:
Server Error in '/' Application、[System.XxxException: ...]YSOD。
不含内部信息的干净 JSON 错误({"error":"Invalid input"})不算发现——这属于正确处理。泄露内部结构才算。
验证规范
- 捕获泄露的确切内容(路径、ORM 类、版本、堆栈帧)——这才是证据。仅仅“返回了 500”不属于信息泄露。
- 记录泄露内容能为后续攻击提供什么帮助(例如,泄露的 SQL 错误 → hunt-sqli;泄露的绝对路径 → hunt-lfi)。
评论
支持 Markdown