新宝gg

EN
  • Linux权限提升:Python库挟制

    宣布时间:2021-07-02
    浏览量: 12946

    在这篇文章中, ,,,,我们将先容一些在基于Linux的装备上通过使用Python库和剧本提升权限的要领。。。。 。 。。。

    1.先容

    一样平常来说, ,,,,当攻击者处于有python文件的情形中, ,,,,可以用来提升其会见权限的方法较量有限。。。。 。 。。。本文将先容使用写权限、sudo权限和编辑Path变量,这三种提权方法。。。。 。 。。。

    为了利便演示, ,,,,我们先建设一个导入一些库的示例剧本。。。。 。 。。。在现真相形中, ,,,,这可能是个一样平常的python剧本或是一个开发职员正在举行的项目。。。。 。 。。。在CTF角逐中, ,,,,可能很容易找到一个包括与此相类似的剧本。。。。 。 。。。我们建设的示例剧本中, ,,,,首先导入webbrowser� ?????? ?椋� ,,,,然后使用open函数来运行设惫亓默认web浏览器, ,,,,来翻开/网页(此处以新宝gg官网举例), ,,,,如图1-1。。。。 。 。。。

    图片1.png

                       图1-1可以看到运行剧本程序会翻开新宝gg官网

    要领一:这个误差使用是基于我们导入的� ?????? ?槲募哂行慈ㄏ�。。。。 。 。。。当被导入的� ?????? ?槲募哂性市砣魏斡没П嗉娜ㄏ奘保� ,,,,它就可能成为一个误差。。。。 。 。。。在我们建设的python示例剧本中, ,,,,挪用了webbrowser.py� ?????? ?槲募�。。。。 。 。。。为了更好地相识这种提权方法, ,,,,我们将首先在ubuntu情形中建设懦弱性误差情形, ,,,,然后使用另一个机械来攻击使用这个误差。。。。 。 。。。


    误差建设:正如前文所讲, ,,,,在这种要领中, ,,,,误差是基于� ?????? ?槲募娜ㄏ�。。。。 。 。。。为了却构这个误差, ,,,,我们首先需要找到� ?????? ?槲募�。。。。 。 。。。我们可以用locate下令来找到它, ,,,,虽然也可以使用find之类的下令举行查找。。。。 。 。。。我们可以看到它位于/usr/lib/python3.8/内里, ,,,,然后我们可以看到, ,,,,� ?????? ?槲募哪先ㄏ奘牵核姓哂卸痢⑿础⒅葱械娜ㄏ蓿� ,,,,组有执行和读的权限, ,,,,其他用户只有执行的权限。。。。 。 。。。这意味着除非用户是root权限, ,,,,不然任何人不可编辑该文件。。。。 。 。。。为了却构这个误差, ,,,,我们需要用chmod下令改变一下权限, ,,,,使每个用户都可以读取、写入和执行。。。。 。 。。。这从下图1-2中可以看到。。。。 。 。。。

    图片3.png

                      图1-2可以看到所有用户对文件具有读, ,,,,写, ,,,,执行权限。。。。 。 。。。

    要想让Linux机械变得易受攻击, ,,,,下一步要做的就是提供一个运行python剧本的要领。。。。 。 。。。最简朴的要领是写入sudoers文件中, ,,,,这样攻击者(可以会见用户lele)就可以执行我们建设的python剧本(hack.py)。。。。 。 。。。如图1-3.

    图片4.png 

    图1-3

    以上就是一个完整使机械容易受到Python库挟制的攻击的历程, ,,,,其余没有提到的设置都为Linux的默认设置。。。。 。 。。。

    误差使用:该误差使用的条件是我们在目的机上已经获得初始驻足点。。。。 。 。。。然后我们可以使用这种要领在获得初始驻足点后提升权限。。。。 。 。。。为了模拟这种情形, ,,,,我们先以用户lele的身份毗连到目的机。。。。 。 。。。作为一个需要提升权限的攻击者, ,,,,我们运行sudo -l下令, ,,,,看看哪些剧本或二进制文件是以提升的权限运行的。。。。 。 。。� ?????? ?梢钥吹剑� ,,,,我们能使用python3.8来运行hack.py。。。。 。 。。。作为一个攻击者, ,,,,我们使用cat下令审查剧本内容, ,,,,看到它导入一个名为webbrowser的� ?????? ?�。。。。 。 。。。我们使用locate下令找到该� ?????? ?榈奈恢茫� ,,,,发明它位于/usr/lib/python3.8中。。。。 。 。。。然后我们还可以发明lele用户拥有该� ?????? ?榈男慈ㄏ�。。。。 。 。。。如图1-4, ,,,,图1-5所示。。。。 。 。。。

    图片5.png

                         图1-4可以看到哪些剧本拥有root权限

    图片6.png

                       图1-5可以看到目的剧本所处位置

    我们用vim编辑器翻开该� ?????? ?槲募� ,,,,然后在被hack.py文件挪用的函数内里加入了反弹shell的python剧本。。。。 。 。。。在前面我们可以看到, ,,,,它使用一个open函数在浏览器中翻开了一个网页。。。。 。 。。。因此, ,,,,我们将反弹shell的代码添加到该� ?????? ?槲募校� ,,,,如下图1-6所示。。。。 。 。。。

    vim /usr/lib/python3.8/webbrowser.py

    图片6.png

                          图1-6将反弹shell的代码写入图中位置

    编辑完� ?????? ?槲募螅� ,,,,我们生涯并关闭编辑器。。。。 。 。。。翻开ctf机械的另一台终端, ,,,,我们在shellcode剧本中指定的端口上翻开一个Netcat监听器, ,,,,然后以lele用户回到终端, ,,,,用sudo执行hack.py剧本, ,,,,如图1-7所示。。。。 。 。。。

    图片7.png

                                   图1-7

    当剧本运行时, ,,,,我们就可以看到一个会话毗连到了新宝ggNetcat监听器。。。。 。 。。。通过whoami下令和id下令可以看到我们已经乐成地将Linux权限从lele用户提升到了root权限用户。。。。 。 。。。

    要领二:

    这个误差是基于Python库路径的优先级顺序, ,,,,它适用于我们剧本正在导入的� ?????? ?槲募�。。。。 。 。。。当一个� ?????? ?樵诰绫局斜坏既胧保� ,,,,Python会以特定的优先顺序在默认目录中寻找特定的� ?????? ?槲募�。。。。 。 。。。在我们建设的python剧本中, ,,,,我们有webbrowser.py� ?????? ?槲募慌灿�。。。。 。 。。。由于若是在与原始脚内情同的目录下保存一个Python� ?????? ?槲募� ,,,,它将获得优先于默认路径的职位。。。。 。 。。。为了更好地相识背后爆发了什么, ,,,,以及怎么样导致权限升级的, ,,,,我们先在ubuntu情形中建设误差, ,,,,然后使用另一个机械Linux来使用这个误差。。。。 。 。。。

    误差构建:

    正如前面所讨论的, ,,,,在这种要领中, ,,,,误差是基于� ?????? ?槲募葱械挠畔人承�。。。。 。 。。。为了却构这个误差, ,,,,首先, ,,,,我们需要把要领一加入的反弹shell的代码注释掉或者直接删掉(如图2-1), ,,,,阻止爆发滋扰, ,,,,然后恢复我们先前付与文件的权限(如图2-2)。。。。 。 。。。这样, ,,,,这台机械就不会在多个方面泛起误差。。。。 。 。。。

    图片9.png

    图2-1 注释掉先前加的反弹shell代码

    图片10.png

    图2-2恢复webbrowser.py的权限。。。。 。 。。。

    接下来,我们回到我们先前建设的python剧本。。。。 。 。。。我们可以看到,它位于lele用户的home目录下,它仍然包括相同的代码,需要导入 webbrowser� ?????? ?�, ,,,,如图2-3所示。。。。 。 。。。

    图片11.png

                                 图2-3

    sudoers文件中与要领一中的编写一致, ,,,,使其包括剧本hack.py的准确路径, ,,,,如图2-4所示。。。。 。 。。。

    图片12.png

    图2-4

    以上是一个完整的使机械容易受到Python库挟制的攻击历程。。。。 。 。。。其余没有提到的设置都为Linux的默认设置。。。。 。 。。。

    误差使用:

    同样, ,,,,该误差使用的条件是我们在目的机上已经获得初始驻足点。。。。 。 。。。然后我们可以使用这种要领在获得初始驻足点后提升权限。。。。 。 。。。为了模拟这种情形, ,,,,我们以用户lele的身份毗连到目的机械。。。。 。 。。。作为一个需要提升权限的攻击者, ,,,,我们运行sudo -l下令, ,,,,看看我们可以用哪些剧本或二进制文件是以提升的权限运行的。。。。 。 。。。我们看到, ,,,,我们可以使用python3.8来运行hack.py。。。。 。 。。。作为一个攻击者, ,,,,我们使用cat下令审查该剧本, ,,,,看到它导入了一个名为webbrowser的� ?????? ?�, ,,,,如图2-5。。。。 。 。。。

    图片13.png

    图2-5

    由于 hack.py 位于 lele 用户的主目录内, ,,,,而我们有 lele 用户的会见权限, ,,,,我们可以在主目录内建设一个文件。。。。 。 。。。在这种情形下, ,,,,需要注重的是我们不可编辑 hack.py 文件。。。。 。 。。。在这种情形下, ,,,,我们将建设一个webbrowser.py文件。。。。 。 。。。然后在建设的webbrowser.py文件中添加反弹shell的代码。。。。 。 。。。如图2-6

    图片14.png 

    图2-6 反弹shell代码

    接下来,我们需要运行一个Netcat侦听器端口,我们提到在反向shellcode。。。。 。 。。。然后我们将继续使用sudo执行hakc.py剧本, ,,,,如图2-7。。。。 。 。。。

    图片15.png

    图2-7

    当剧本运行时,我们看到一个会话毗连到Netcat侦听器。。。。 。 。。�; ;; ;;;峄暗膇d下令证实在目的机械上已经是root权限。。。。 。 。。。我们已经乐成地把lele用户提升特权为root用户, ,,,,如图2-8。。。。 。 。。。

    图片16.png

    图2-8提权为root权限

    要领3

    这个误差是通过Python PATH情形变量举行搜索的Python库来使用的。。。。 。 。。。这个变量有一个目录列表, ,,,,在这个列表中, ,,,,Python会搜索导入� ?????? ?榈牟畋鹉柯�。。。。 。 。。。若是攻击者能够改变或修改该变量, ,,,,那么他们就可以使用它来提升目的机械的权限。。。。 。 。。。为了更好地相识是怎么样导致权限升级的, ,,,,我们和前面一样先在ubuntu情形中建设误差, ,,,,然后使用另一台Linux来攻击使用这个误差。。。。 。 。。。

    误差构建

    正如前面所讨论的, ,,,,这个要领的误差使用是基于python情形path变量的。。。。 。 。。。为了却构这个误差, ,,,,首先, ,,,,和前面一样, ,,,,我们需要恢复Linux情形到最初的设置。。。。 。 。。。然后, ,,,,在tmp目录内建设hack.py剧本, ,,,,我们可以验证该剧本的内容与之前一样, ,,,,如图3-1, ,,,,图3-2所示。。。。 。 。。。

    图片17.png

    图3-1运行该剧本会翻开新宝gg官网

    图片18.png 

    图3-2 可以看到剧本内容

    接下来, ,,,,我们需要在sudoers文件中做一些修改。。。。 。 。。。首先, ,,,,我们把文件的位置改为/tmp目录, ,,,,然后在文件中加入SETENV标记, ,,,,如图3-3所示。。。。 。 。。。这意味着lele用户可以使用具有sudo权限的SETENV下令, ,,,,而无需输入root密码。。。。 。 。。。SETENV是个可以改变Python PATH情形变量的值, ,,,,并将任何位置纳入我们在前面的要领中学到的执行顺序的下令。。。。 。 。。。

    图片19.png 

    图3-3给新宝gg文件加上SETENV标记设置情形变量

    以上就是使机械容易受到Python库挟制的完整历程。。。。 。 。。。其余没有提到的设置都被设置为Linux的默认设置。。。。 。 。。。

    误差使用

    同样, ,,,,该误差使用的条件是我们在目的机上已经获得初始驻足点。。。。 。 。。。然后我们可以使用这种要领在获得初始驻足点后提升权限。。。。 。 。。。为了模拟这种情形, ,,,,我们以用户lele的身份毗连到目的机械。。。。 。 。。。作为一个需要提升权限的攻击者, ,,,,我们运行sudo -l下令, ,,,,看看我们可以用哪些剧本或二进制文件是以提升的权限运行的。。。。 。 。。。我们看到, ,,,,我们可以用root权限使用SETENV,这意味着我们可以用它来改变导入� ?????? ?榈挠畔人承�。。。。 。 。。。由于hack.py位于/tmp目录内, ,,,,我们进入其中并检查hack.py剧本,如图3-4所示。。。。 。 。。。

    图片20.png 

    图3-4 可以看到已经以root权限举行设置情形变量

    由于它需要导入webbrowser� ?????? ?椋� ,,,,我们首先将建设一个名为webbrowser.py的恶意� ?????? ?槲募� ,,,,然后使用改变情形变量Python PATH的能力导入新宝gg恶意� ?????? ?槲募� ,,,,恶意� ?????? ?槲募邪ǚ吹痵hell的代码。。。。 。 。。。如图3-5接着在剧本中提到的统一端口上启动一个Netcat监听器, ,,,,并继续将/tmp目录添加到Python路径中, ,,,,然后执行hack.py文件以提升新宝gg会见权限。。。。 。 。。。

    图片21.png

    图3-5恶意� ?????? ?槲募锇ǚ吹痵hell的代码

    当剧本运行时, ,,,,我们可以看到一个会话毗连到了新宝ggNetcat监听器。。。。 。 。。。whoami和id下令批注晰我们已经乐成地将权限从lele用户提升到了root权限用户, ,,,,如图3-6。。。。 。 。。。

    图片22.png 

    图3-6已经从通俗会见权限提权为root权限

    在这篇文章中, ,,,,我们通过人为的为Python库的情形设置三个真实的场景, ,,,,然后先容了一些过失的设置可能导致攻击者将其会见权限提升到root权限级别的要领。。。。 。 。。。


    热门内容

    最先试用新宝gg产品
    申请试用

    20年公安服务履历

    7*24小时应急响应中心

    自主知识产权的产品装备

    专家级清静服务团队

    网络空间数据治理专家

    荣获国家科学手艺二等奖

    置顶
    电话

    400-700-1218

    官方热线电话

    咨询
    留言
    二维码
    微信公众号
    公司微博
    【网站地图】【sitemap】