嘿,大家好,我希望大家都做得很好!
今天的主题是 Python 库劫持,这是一种权限提升技术,允许您在以其他用户的权限执行文件时覆盖 Python 模块以获取 shell。
漏洞
这些漏洞是由于 Python 脚本中执行权限配置错误造成的。今天的演示将使用 TryHackMe 的 Wonderland 盒子进行教学。我会直接升级特权,这是我们感兴趣的,我会把到达那里的所有乐趣都留给你,好吗?
在获得对计算机的一些初始访问权限后,第一步是列出 SUDO(超级用户 DO)权限:
简而言之,我们可以运行具有管理权限的脚本。但是那个文件里有什么?
好的,我们注意到该文件导入了随机模块。问题是:如果我们创建合法模块的恶意版本,以不同的用户身份打开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
注意:如果我们没有权限写入脚本所在的目录,我们可以在 /tmp 等公共目录下编写恶意库,并在执行时引用 PYTHONPATH 环境变量。它将以相同的方式工作。
sudo -u rabbit PYTHONPATH=/tmp /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py
所以只要拿到旗帜就行了。在这种情况下,我们将权限升级到 rabbit 用户,但在现实世界中,也可以直接升级到 root。由于此探索超出了本文的范围,因此我们不会在此处进行演示,因为重点放在技术上。祝你好运,解决机器的其余部分。
缓解
为了缓解这种类型的故障,在导入库时选择绝对路径,使用虚拟环境,最重要的是,限制权限并仅在真正必要的情况下保留它们,这是很有趣的。在其他情况下,还会检查导入模块的完整性。
今天就到这里,谢谢!
原文始发于微信公众号(安全狗的自我修养):Python 库劫持
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论