Werkzeug / Flask Debug

即时可用的漏洞评估和渗透测试设置。使用 20 多种工具和功能从侦察到报告运行完整的渗透测试。我们不取代渗透测试人员 - 我们开发定制工具、检测和利用模块,让他们有更多时间深入挖掘、弹出 shell 并享受乐趣。
控制台 RCE
如果调试处于活动状态,您可以尝试访问 /console 并获取 RCE。

在互联网上还有一些漏洞,比如这个或者在metasploit中的一个。
Pin Protected - 路径遍历
在某些情况下,/console 端点将受到 pin 的保护。如果您有一个文件遍历漏洞,您可以泄露所有必要的信息来生成该 pin。
Werkzeug 控制台 PIN 利用
强制应用中的调试错误页面以查看此内容:
遇到“控制台已锁定”情况时,尝试访问Werkzeug的调试界面,需要输入PIN码才能解锁控制台。建议通过分析Werkzeug的调试初始化文件(__init__.py)中的PIN码生成算法来利用控制台PIN码。可以从Werkzeug源代码存储库中研究PIN码生成机制,但建议通过文件遍历漏洞获取实际服务器代码,以避免潜在的版本差异。
要利用控制台PIN码,需要两组变量,probably_public_bits和private_bits:
probably_public_bits
probably_public_bitsusername:指的是启动Flask会话的用户。modname:通常被指定为flask.app。getattr(app, '__name__', getattr(app.__class__, '__name__')):通常解析为Flask。getattr(mod, '__file__', None):表示Flask目录中app.py的完整路径(例如,/usr/local/lib/python3.5/dist-packages/flask/app.py)。如果不适用app.py,请尝试app.pyc。
private_bits
private_bitsuuid.getnode():获取当前计算机的MAC地址,使用str(uuid.getnode())将其转换为十进制格式。要确定服务器的MAC地址,必须识别应用程序使用的活动网络接口(例如
ens3)。在存在不确定性的情况下,**泄露/proc/net/arp以查找设备ID,然后从/sys/class/net/<device id>/address**中提取MAC地址。将十六进制MAC地址转换为十进制可以按以下示例进行:
get_machine_id():将/etc/machine-id或/proc/sys/kernel/random/boot_id的数据与/proc/self/cgroup最后一个斜杠(/)后的第一行连接起来。
最后更新于
