01 方法三
这个漏洞基于 Python PATH 环境变量进行搜索的Python 库。该变量保存了一个目录列表,Python 在其中搜索导入模块。如果攻击者能够更改或修改该变量,他们就可以利用它来在目标机器上提升权限。为了更好地了解背后的原理,以及它是如何导致特权升级的,我们将首先在我们的 Ubuntu 环境中创建这个漏洞,然后再使用 Kali Linux 来利用这个漏洞。
漏洞创建
如前所述,这种方法中的漏洞基于环境路径变量。要创建这个漏洞,首先我们需要恢复之前创建的易受攻击权限,以防止这台机器以多种方式变得脆弱。我们在 tmp 目录中创建了 hack.py 脚本。我们可以验证脚本内容与之前相同。
cd /tmp
ls
cat hack.py
接下来,我们需要在 sudoers 文件中做一些更改。首先,我们将文件位置更改为 /tmp 目录,然后我们向文件中添加 SETENV 标签。这意味着 pavan 用户可以使用具有 sudo 权限的 SETENV 命令,而无需输入 root 密码。SETENV是一种工具,可以更改PYTHONPATH环境变量的值,以将任何位置包含到我们在上一个方法中学到的执行顺序中。
nano /etc/sudoers
pavan ALL=(root) NOPASSWD:SETENV /usr/bin/python3.8 /tmp/hack.py
这是使机器容易受到 Python 库劫持的完整过程。所有未提及的配置都设置为 Linux 的默认值,绝对没有进行任何其他更改,现在是扮演攻击者的时候了。
02 利用
再次强调,利用过程不包含获取目标机器初始立足点的方法,而是专注于在攻击者获得初始立足点后如何提升权限。为了模拟这一点,我们以用户 pavan 的身份连接到目标机器。像任何需要提升权限的攻击者一样,我们运行了 sudo -l 命令,以查看我们能够以特权运行哪些脚本或二进制文件。结果显示我们可以使用 SETENV,这意味着我们可以使用它来修改导入模块的优先级顺序。由于 hack.py 位于 /tmp 目录中,我们进入该目录并检查 hack.py 脚本。
ssh pavan@192.168.1.46
sudo -l
cd /tmp
ls
由于脚本导入了 webbrowser 模块,我们首先将创建一个名为 webbrowser.py 的恶意模块文件,然后利用更改环境变量 PYTHONPATH 的能力,我们将添加一个条目来包含我们的恶意模块文件。恶意模块文件包含反向 shellcode。我们在与脚本中提到的相同端口上启动了 Netcat 监听器,然后将 /tmp 目录添加到 Python 路径中,并执行 hack.py 文件以提升我们的访问权限。
cat hack.py
nano webbrowser.py
cat webbrowser.py
sudo PYTHONPATH=/tmp/ /usr/bin/python3.8 /tmp/hack.py
脚本运行后,我们立即看到一个会话连接到了我们的 Netcat 监听器。通过执行 whoami 命令,我们确认当前会话的用户是目标机器上的 root 用户。我们成功地将权限从 pavan 用户提升到 root 用户。
nc -lvp 1234
id
结论
在本文中,我们成功设置了三个针对 Python 库环境的真实场景,并介绍了一些可能导致攻击者提升其访问权限到 root 级别的配置错误。开发环境是最受攻击的环境之一,因为在这些环境中,执行任务的便利性优先于环境的安全性。本文证明了单个配置错误可能导致灾难性后果。
参考及来源:
https://www.hackingarticles.in/linux-privilege-escalation-python-library-hijacking/
免责&版权声明
原文始发于微信公众号(安全小白团):三种利用python脚本劫持实现Linux提权的方法 0x3
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论