mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
4.5 KiB
4.5 KiB
Python 内部读取小工具
从零开始学习 AWS 黑客攻击直至成为专家 htARTE (HackTricks AWS 红队专家)!
支持 HackTricks 的其他方式:
- 如果您希望在 HackTricks 中看到您的公司广告 或 下载 HackTricks 的 PDF 版本,请查看 订阅计划!
- 获取 官方 PEASS & HackTricks 商品
- 发现 PEASS 家族,我们独家的 NFT 集合
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上 关注 我 @carlospolopm。
- 通过向 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
使用这篇文章中的有效载荷,你将能够访问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红队专家)!
其他支持HackTricks的方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。