Werkzeug / Flask Debug
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
从黑客的角度审视您的网络应用、网络和云
查找并报告具有实际商业影响的关键可利用漏洞。 使用我们 20 多个自定义工具来映射攻击面,发现让您提升权限的安全问题,并使用自动化利用收集重要证据,将您的辛勤工作转化为有说服力的报告。
如果调试处于活动状态,您可以尝试访问 /console
并获得 RCE。
互联网上还有几个漏洞,比如这个或metasploit中的一个。
在某些情况下,/console
端点将受到PIN保护。如果您有文件遍历漏洞,您可以泄露生成该PIN所需的所有信息。
在应用程序中强制显示调试错误页面以查看此内容:
在尝试访问 Werkzeug 的调试接口时,会遇到关于“控制台锁定”场景的消息,指示需要一个 PIN 来解锁控制台。建议通过分析 Werkzeug 的调试初始化文件 (__init__.py
) 中的 PIN 生成算法来利用控制台 PIN。可以从 Werkzeug 源代码库 研究 PIN 生成机制,但建议通过文件遍历漏洞获取实际服务器代码,以避免潜在的版本差异。
要利用控制台 PIN,需要两组变量,probably_public_bits
和 private_bits
:
probably_public_bits
username
: 指发起 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
uuid.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
中最后一个斜杠 (/
) 后的第一行连接起来。
学习和实践 AWS 黑客攻击:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客攻击:HackTricks 培训 GCP 红队专家 (GRTE)