hacktricks/generic-methodologies-and-resources/python/python-internal-read-gadgets.md

4.5 KiB
Raw Blame History

Python 内部读取小工具

从零开始学习 AWS 黑客攻击直至成为专家 htARTE (HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

基本信息

不同的漏洞,如 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_iduuid 节点,这些是你需要生成 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的方式