mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
4.4 KiB
4.4 KiB
Python内部读取工具
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
基本信息
不同的漏洞,如Python格式字符串或类污染可能会允许您读取Python内部数据,但不允许您执行代码。因此,渗透测试人员需要充分利用这些读取权限来获取敏感权限并升级漏洞。
Flask - 读取密钥
Flask应用程序的主页可能会有**app
全局对象,其中配置了密钥**。
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
在这种情况下,可以使用任何小工具来从绕过Python沙盒页面访问全局对象来访问该对象。
在漏洞存在于不同的Python文件中的情况下,您需要一个小工具来遍历文件以找到主文件,以访问全局对象app.secret_key
,从而更改Flask密钥并能够利用此密钥升级权限。
像这样的有效负载来自此解决方案:
{% code overflow="wrap" %}
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
{% endcode %}
使用此有效负载来更改 app.secret_key
(您的应用程序中的名称可能不同),以便能够签署新的和更多特权的 flask cookies。
Werkzeug - machine_id 和 node uuid
使用此 writeup 中的有效负载,您将能够访问 machine_id 和 uuid 节点,这是您需要的主要秘密,以便生成 Werkzeug pin ,您可以使用它来访问 /console
中的 python 控制台,如果启用了调试模式:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
{% hint style="warning" %}
请注意,您可以通过在网页中生成一些错误来获取app.py
的服务器本地路径,这将提供给您路径。
{% endhint %}
如果漏洞存在于不同的Python文件中,请检查之前的Flask技巧,以访问主Python文件中的对象。
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 发现PEASS家族,我们的独家NFTs收藏品
- 加入 💬 Discord群 或 电报群 或在Twitter上关注我们 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。