Py学习  »  Python

Linux提权:Python脚本利用劫持的三种方法

嘶吼专业版 • 2 年前 • 388 次点击  

在本文中,我们将演示另一种通过利用 Python 库和脚本在基于 Linux 的设备上提升权限的方法。

通常,要在具有 python 文件的环境中发起攻击时。攻击者可以用来提升其访问权限的选项是有限的。我们将在本文中发现 3 种方法。一些错误配置包括写入权限、sudo 权限和编辑路径变量。

Python脚本创建

为了演示使用 python 脚本提升权限的操作,我们创建了一个导入一些库的示例脚本。在现实场景中,这可以是一群漏洞利用人员正在漏洞利用的通用 Python 脚本或项目。在现实场景中,这些很容易找到,并且可能包含与此类似的脚本。该脚本导入 webbrowser 模块,然后继续使用 open 函数运行设备上的默认 Web 浏览器以打开 hackingarticles 网页。

为了查看脚本是如何工作的,我们运行脚本并发现 Web 浏览器打开了 hackingaricles 网页,如下所示。

方法一

此漏洞基于应用于脚本导入的模块文件的权限。当正在导入的模块文件具有允许任何用户进行编辑的权限时,它就会成为一个漏洞。在我们创建的python脚本中,有被调用的 webbrowser.py 模块文件。当你拥有一个具有所有默认权限的未更改环境时,这不是问题,但在漏洞利用环境中,往往会在安全性方面做出一些妥协,而不是较小的便利性。为了更好地理解什么在后台运行,什么权限会导致权限升级,我们将首先在我们的ubuntu环境中创建这个漏洞,然后使用Kali Linux来利用这个漏洞。

漏洞创建

如前所述,在这种方法中,漏洞基于模块文件的权限。要创建此漏洞,我们需要先定位模块文件。我们使用 locate 命令来找到它。看到它位于/usr/lib/python3.8/中。这可能因安装而异。因此,请尝试在你的环境中找到它。然后我们可以看到,模块文件默认的权限是拥有者的读、写、执行权限,组的执行和读取权限,其他的只有执行权限。这意味着除非用户是 root,否则它不能编辑文件。为了创建漏洞,我们更改了权限,以便每个用户都可以读取、写入和执行这些权限。

使我们的设备容易受到攻击的下一个任务是提供一种运行python脚本的方法,最简单的方法是在sudoers文件中创建一个条目,这样攻击者(可以访问用户pavan)就能够执行我们创建的python脚本(hack.py)。

这是一个完整的过程,使设备容易受到 Python 库劫持。所有没有提到的配置都被设置为Linux的默认配置。没有任何其他变化,现在就可以伪装成攻击者了。

漏洞利用

漏洞利用不会包含在目标设备上获得初始立足点的方法。它将包含在攻击者获得初始立足点后提升特权的方法。为了验证这一点,我们作为用户 pavan 连接到目标设备。作为任何需要提升权限的攻击者,我们运行 sudo -l 命令来查看我们可以使用提升的访问权限运行哪些脚本或二进制文件。我们看到可以使用python3.8来运行hack.py。作为攻击者,我们使用 cat 命令调查脚本以查看它是否正在通过 webbrowser 的名称导入模块。我们使用locate命令查找模块的位置,发现它位于/usr/lib/python3.8中。接下来,我们检查模块的权限,发现它可由我们有权访问的 pavan 用户写入的。

我们使用 nano 编辑器打开模块文件,并在 hack.py 文件调用的函数中添加了 python 逆向 shell 脚本。我们之前看到它在浏览器中打开了一个网页。因此,它将使用 open 函数。此时,就可以添加如下所示的逆向 shellcode。

编辑完模块文件后,我们保存并关闭编辑器。回到 Kali Linux 控制台,我们在逆向 shell 脚本中提到的端口上打开一个 Netcat 监控程序,然后以 pavan 用户身份返回 shell 并使用 sudo 执行 hack.py 脚本,如图所示。

一旦脚本运行,我们就会看到一个会话连接到我们的 Netcat 监控程序。whoami 命令揭示了我们拥有的会话是针对目标设备上的 root 用户的。我们已经成功地将权限从 pavan 用户提升到了 root 用户。

方法二

此漏洞是基于应用于脚本导入的Module文件的Python库路径的优先级顺序。当一个模块被导入到脚本中时,Python将在默认目录中按照特定的优先级顺序查找特定的模块文件。在我们创建的python脚本中,webbrowser.py模块文件被调用。正在搜索的模块将位于一个默认路径中。尽管在与原始脚本相同的目录中存在一个python模块文件,它将获得高于默认路径的优先级。为了更好地理解后台发生了什么,它如何导致特权升级,我们将首先在ubuntu环境中创建这个漏洞,然后使用Kali Linux来利用这个漏洞。

漏洞创建

如前所述,在这种方法中,漏洞基于模块文件执行的优先级顺序。要创建此漏洞,首先,我们需要恢复之前创建的易受攻击的权限。这样这台设备就不会以多种方式受到攻击,这就要求必须更改 webbrowser.py 的权限。

接下来,我们回到之前创建的 python 脚本。我们可以看到它位于 pavan 用户的家中,它仍然包含与我们开始时相同的代码。它仍然导入 webbrowser 模块。

由于我们将脚本从 pentest 用户主目录移动到 pavan 用户的主目录,我们还需要在 sudoers 文件中进行更改,以便它包含脚本 hack.py 的正确路径。

这是一个完整的过程,使设备容易受到 Python 库劫持。所有没有提到的配置都被设置为Linux的默认配置,如果没有任何其他变化,我们就可以伪装成攻击者了。

漏洞利用

同样,该漏洞利用不会包含在目标设备上获得初始立足点的方法,它将包含在攻击者获得初始立足点后提升特权的方法。为了验证这一点,我们作为用户 pavan 连接到目标设备。作为任何需要提升权限的攻击者,我们运行 sudo -l 命令来查看我们可以使用提升的访问权限运行哪些脚本或二进制文件。我们看到可以使用python3.8来运行hack.py。作为一个攻击者,我们使用cat命令调查这个脚本,看它是否正在导入一个名为webbrowser的模块。

由于 hack.py 位于 pavan 用户的主目录中,并且我们以 pavan 用户的身份访问,因此我们可以在主目录中创建一个文件。在这种情况下,需要注意的是我们无法编辑 hack.py 文件。如果是这种情况,我们将直接编辑该文件并在其中添加一个逆向 shellcode,但在这种情况下,我们将创建一个 webbrowser.py 文件。我们将在刚刚创建的 webbrowser.py 文件中添加 python的 逆向 shellcode。

接下来,我们需要在逆向 shellcode 中提到的端口上运行一个 Netcat 监控程序。然后我们将继续使用 sudo 执行 hack.py 脚本。

一旦脚本运行,我们就会看到一个会话连接到我们的 Netcat 监控程序。id 命令提示我们拥有的会话是针对目标设备上的 root 用户的。我们已经成功地将权限从 pavan 用户提升到了 root 用户。

方法三

此漏洞基于通过 Python PATH 环境变量搜索的 Python 库。这个变量包含一个目录列表,python 在其中搜索导入模块的不同目录。如果攻击者可以更改或修改该变量,则他们可以使用它来提升目标设备上的权限。为了更好地了解后台发生了什么,它是如何导致权限提升的,我们将首先在运行的 ubuntu 环境中创建该漏洞,然后使用 Kali Linux 来利用该漏洞。

漏洞创建

如前所述,这种方法的漏洞是基于环境路径变量的。要创建此漏洞,首先,我们需要恢复之前创建的易受攻击的权限。这样这台设备就不会以多种方式受到攻击。我们在 tmp 目录中创建 hack.py 脚本,就可以验证脚本的内容是否与之前相同。

接下来,我们需要在 sudoers 文件中进行一些更改。首先,我们将文件的位置更改为 /tmp 目录,然后将 SETENV 标记添加到文件中。这意味着 pavan 用户可以使用具有 sudo 权限的 SETEV 命令,而无需输入 root 密码。SETENV 是一种工具,它可以更改 PYTHONPATH 环境变量的值,以将任何位置包含到我们在前面的方法中学到的执行顺序中。

这是使设备容易受到 Python 库劫持的完整过程。所有没有提到的配置都被设置为Linux的默认配置。如果没有任何其他变化,就可以伪装成攻击者了。

漏洞利用

同样,利用不会包含在目标设备上获得初始立足点的方法。它将包含在攻击者获得初始立足点后提升特权的方法。为了验证这一点,我们作为用户 pavan 连接到目标设备。作为任何需要提升权限的攻击者,我们运行 sudo -l 命令来查看我们可以使用提升的访问权限运行哪些脚本或二进制文件。我们看到我们可以使用具有提升访问权限的 SETEV。这意味着我们可以使用它来改变导入模块的优先级顺序。由于 hack.py 位于 /tmp 目录中,我们可以进入它并检查 hack.py 脚本。

因为它正在导入web浏览器模块,所以我们首先将创建一个名为webbrowser.py的恶意模块文件,然后使用更改环境变量PYTHONPATH的功能,我们将创建一个条目以包含我们的恶意模块文件。恶意模块文件包含逆向shellcode。我们在脚本中提到的相同端口上启动一个 Netcat 监控程序,然后继续将 /tmp 目录添加到 Python 路径中,然后执行 hack.py 文件以提升我们的访问权限。

一旦脚本运行,我们就会看到一个会话连接到我们的 Netcat 监控程序。whoami 命令说明了我们拥有的会话是针对目标设备上的 root 用户的。此时,我们已经成功地将权限从 pavan 用户提升到了 root 用户。

结论

在本文中,我们能够为 Python 库的环境设置三个真实攻击场景,然后引入了一些可能导致攻击者将其访问权限提升到root级别的错误配置。漏洞利用环境是最有针对性的环境之一,因为在这些环境中,执行任务的便利性优先于环境的安全性。这再次证明,一个错误配置的设置足可以导致全局毁灭性的结果。

参考及来源:https://www.hackingarticles.in/linux-privilege-escalation-python-library-hijacking/

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/115281
 
388 次点击