Python 库劫持

admin 2024年8月14日08:40:31评论24 views字数 927阅读3分5秒阅读模式

嘿,大家好,我希望大家都做得很好!
今天的主题是 Python 库劫持,这是一种权限提升技术,允许您在以其他用户的权限执行文件时覆盖 Python 模块以获取 shell。

Python 库劫持

漏洞

这些漏洞是由于 Python 脚本中执行权限配置错误造成的。今天的演示将使用 TryHackMe 的 Wonderland 盒子进行教学。我会直接升级特权,这是我们感兴趣的,我会把到达那里的所有乐趣都留给你,好吗?

在获得对计算机的一些初始访问权限后,第一步是列出 SUDO(超级用户 DO)权限:

Python 库劫持

简而言之,我们可以运行具有管理权限的脚本。但是那个文件里有什么?

Python 库劫持

好的,我们注意到该文件导入了随机模块。问题是:如果我们创建合法模块的恶意版本,以不同的用户身份打开shell,因为我们可以作为“兔子”运行此脚本,该怎么办?好消息是,这是可能的。首先,我们创建一个文件来覆盖同名的随机模块。发生这种情况是由于 Python 中的导入优先级。然后,只需以 rabbit 用户身份运行脚本即可。

echo "__import__('pty').spawn('/bin/bash')" > random.py

sudo -u rabbit /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py
Python 库劫持

注意:如果我们没有权限写入脚本所在的目录,我们可以在 /tmp 等公共目录下编写恶意库,并在执行时引用 PYTHONPATH 环境变量。它将以相同的方式工作。

sudo -u rabbit PYTHONPATH=/tmp /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py

所以只要拿到旗帜就行了。在这种情况下,我们将权限升级到 rabbit 用户,但在现实世界中,也可以直接升级到 root。由于此探索超出了本文的范围,因此我们不会在此处进行演示,因为重点放在技术上。祝你好运,解决机器的其余部分。

缓解

为了缓解这种类型的故障,在导入库时选择绝对路径,使用虚拟环境,最重要的是,限制权限并仅在真正必要的情况下保留它们,这是很有趣的。在其他情况下,还会检查导入模块的完整性。

今天就到这里,谢谢!

原文始发于微信公众号(安全狗的自我修养):Python 库劫持

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月14日08:40:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python 库劫持https://cn-sec.com/archives/3065613.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息