用途:面向 Python Web 应用在开启 Debug 模式时的安全测试,识别并利用框架调试功能造成的配置风险。
主要能力:
- 快速识别:通过 /console 路径、Werkzeug Debugger 错误页、Django 黄色调试页、/docs 与 /redoc、Python traceback、X-Powered-By/Server 头等信号判断框架与危害等级。
- Werkzeug Debugger:Debug 模式下提供交互式 Python console,自 0.11+ 起需 PIN 验证。PIN 由 username、modname、app 名称、app 文件路径、uuid.getnode()(MAC)、machine-id 等值生成,需借助 LFI/SSRF/错误信息读取 /etc/passwd、/sys/class/net/eth0/address、/etc/machine-id、/proc/self/cgroup 等文件。获取 PIN 后可在 console 执行命令,或通过 /console 的 pinauth 与 cmd 参数配合 Cookie 调用。Werkzeug 2.1+ 改用 SHA-1 生成 PIN。
- Django DEBUG=True:访问不存在路径或触发错误可泄露 Settings(SECRET_KEY、数据库、云凭据、邮件配置)、URL 路由、traceback 源码与本地变量、请求 Cookie/Session。拿到 SECRET_KEY 后可伪造签名数据或密码重置 Token;默认 JSONSerializer 场景主要关注签名伪造,PickleSerializer 旧应用才涉及反序列化风险。
- FastAPI:/docs、/redoc、/openapi.json 暴露全部接口定义,可枚举路径、方法、参数与响应,重点关注 admin、增删改、用户权限、文件上传下载类端点。
- Tornado 等:debug=True 时错误页显示完整 traceback,但不提供交互式 console,关注源码路径、配置与 cookie_secret 泄露。
使用方式:先做框架识别,再按决策树选择路径;Werkzeug 场景先判断 /console 是否可访问,再计算 PIN;Django 场景主动触发错误提取敏感配置;FastAPI 场景下载 openapi.json 枚举端点。
适用场景:授权范围内的 Web 渗透测试与安全评估。
限制:需目标确实开启 Debug 模式;Werkzeug PIN 计算依赖可读取的系统文件与版本差异;Django 默认序列化方式下反序列化 RCE 不一定成立;资料未提供具体工具安装命令与完整利用脚本,相关细节暂未提供。