image.png
    1、SUID权限只能设置二进制文件
    2、命令执行者要有二进制文件的执行权
    3、命令执行者执行二进制文件时会获得该程序的属主身份
    4、SUID权限只在程序执行过程中有效
    即如果root给一个程序赋予了SUID权限,则普通用户在执行该程序过程中,是root权限

    cp
    以cp为例,这里给cp添加suid权限做测试,拥有suid权限的程序会有rwx编程rws
    image.png
    可以通过find / -perm -u=s -type f 2 > /dev/null查看拥有suid权限的陈鼓型
    perm指定权限,-u=s代表suid权限,type指定文件类u行,f表示常规文件
    image.png
    当普通用户运行cp命令时,此时的cp权限为root,利用时,可以cp把/etc/passwd复制到桌面,然后进行修改
    首先用openssl生成一个密码,passwd参数代表生成一个密码-1 为md5 -salt指定盐(随意指定),最后跟要加密的值,也就是密码
    openssl passwd -1 -salt 1x2x3 123456
    image.png
    复制passwd文件到当前目录
    image.png
    然后按照/etc/passwd的格式添加一个新用户,权限按root的写即可
    image.png
    再复制到/etc/passwd覆盖
    image.png
    su cw
    image.png
    image.png
    提权成功

    find命令再拥有suid权限的情况下,也可以用来提权
    image.png
    image.png
    只需要用exec参数即可
    find test -exec “命令” \;
    image.png
    image.png
    image.png
    find的exec参数用来指定其他命令,以便于来处理搜索到的结果。结果的输出,需要以分号来结束,再bash环境中分号代表代码块结束,有特殊意义,所以这里需要进行转义。

    vim
    vim再拥有suid权限的请款下,也可以用来提权
    image.png
    当vim被赋予suid权限后,意味着任何用户都可以使用vim命令来编辑哪些只能由root编辑的文件,例如通过vim编辑/etc/sudoers文件(普通用户会被直接拒绝访问),再sudoers文件中配置普通用户的权限,权限和root一样
    这里以test用户为例
    image.png
    添加如下内容:
    编辑 /etc/sudoers
    test ALL=(ALL:ALL) ALL
    image.png
    vim编辑后保存时使用wq!强制保存,vim运行时虽然是root权限, 但是wq依然会提示只读
    查看权限已经是all了
    image.png
    sudo bash 就会获得一个root的shell
    image.png

    脚本
    除了系统的一些可执行命令,自己写的可执行文件也可添加suid权限,不论c或者go或者其他语言都可以,这里用c为例
    示例代码如下
    image.png
    使用gcc进行编译
    image.png
    给suid权限
    image.png
    测试提权
    image.png
    更多命令参考
    https://gtfobins.github.io