用途:检测 Flask 应用在生产环境误开 debug=True 时暴露的 Werkzeug 调试器,利用未处理异常触发的 HTTP 500 页面获取堆栈信息、服务器路径、框架版本与调试器 SECRET,并判断控制台是否可执行 Python 代码。
主要能力:触发错误页面并识别 Werkzeug 特征(Werkzeug、Debugger、SECRET、CONSOLE_MODE、EVALEX);从 Traceback 提取文件路径与源码上下文;从 HTML 提取 SECRET 与 EVALEX/CONSOLE_MODE 状态;在 EVALEX=true 时通过 /console 或 debugger 参数尝试命令执行;探测路径、HTTP 方法与 CORS 头。
使用方式:需 curl 与可触发 500 的端点。检测命令示例:curl --max-time 30 --connect-timeout 10 -sk "https://target.com:PORT/sitemap.xml" | grep -oE "(Werkzeug|Debugger|SECRET|CONSOLE_MODE|EVALEX)"。控制台检测:curl -sk "https://target.com:PORT/console",返回 400 表示调试器活跃但控制台关闭,404 表示无调试器,200 表示可能可执行代码。
适用场景:端口扫描发现非标准端口 HTTP 服务、API 返回 Flask/Werkzeug 错误页、URL 资源出现 ?debugger=yes 参数时。
限制:EVALEX=false 时无法通过控制台执行代码,SECRET 本身不足以 RCE;并非所有 500 页面都是 Werkzeug 调试器;调试器可能受 CORS 影响;每次触发错误都会在服务器日志留下记录。