SuperAPI AI 工具集

hunt-exceptional-conditions

安全与审计

查看项目

更新于 10-15 21:37

技能介绍

该技能用于探测应用对异常条件的处理是否失败,属于信息泄露类安全检查,对应“Verbose Errors / Fail-Open (A10:2025)”。

用途:当应用捕获错误并返回干净的通用消息时是正常实现;而当收到未预期输入后抛出未处理异常并把开发者错误页渲染给客户端时,就会泄露堆栈跟踪、ORM/查询内部信息、服务端文件路径以及框架与库版本。这种信息泄露本身即为发现项,也可能为后续 SQLi、RCE、路径类攻击提供线索。

侦察范围:任何解析输入的接口都可作为候选,价值较高的包括期望类型化字段的 JSON API(如 POST /api/* 携带数字、ID、枚举)、带数字或 ID 路径/查询参数的接口(如 /item/{id}、?page=、?quantity=)、搜索/过滤/排序参数,以及对文件或 Content-Type 敏感的 upload 接口。

用法:取一个已知可用的请求,每次只破坏一个假设。可发送错误类型,例如把期望为数字或字符串的字段改为数组或对象(如 {"rating":"x","comment":[1,2,3]}、{"quantity":{}});发送畸形 body,如截断或非法 JSON、未闭合字符串、多余花括号、错误或缺失的 Content-Type;发送边界或超大值,如超长字符串、超大、负数或溢出数字;以及在值中嵌入空字节或控制字符。示例请求(保持原样):POST /api/Feedbacks {"rating":"notanumber","comment":[1,2,3]},GET /item/' 或 /item/%00(同时触发错误路径)。观察重点在响应体而非仅状态码:即使返回 500,甚至 200 或 400,只要 body 包含堆栈或框架错误页即视为信号。

判定泄露的依据是响应体出现跨框架的错误泄露特征,例如 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 错误指向 SQLi 排查,泄露绝对路径指向 LFI 排查)。

限制:资料未提供适用的目标授权范围、环境前提、工具依赖或自动化运行方式,相关细节暂未提供。