
1、SUID权限只能设置二进制文件
2、命令执行者要有二进制文件的执行权
3、命令执行者执行二进制文件时会获得该程序的属主身份
4、SUID权限只在程序执行过程中有效
即如果root给一个程序赋予了SUID权限,则普通用户在执行该程序过程中,是root权限
cp
以cp为例,这里给cp添加suid权限做测试,拥有suid权限的程序会有rwx编程rws
可以通过find / -perm -u=s -type f 2 > /dev/null查看拥有suid权限的陈鼓型
perm指定权限,-u=s代表suid权限,type指定文件类u行,f表示常规文件
当普通用户运行cp命令时,此时的cp权限为root,利用时,可以cp把/etc/passwd复制到桌面,然后进行修改
首先用openssl生成一个密码,passwd参数代表生成一个密码-1 为md5 -salt指定盐(随意指定),最后跟要加密的值,也就是密码
openssl passwd -1 -salt 1x2x3 123456
复制passwd文件到当前目录
然后按照/etc/passwd的格式添加一个新用户,权限按root的写即可
再复制到/etc/passwd覆盖
su cw

提权成功
find命令再拥有suid权限的情况下,也可以用来提权

只需要用exec参数即可
find test -exec “命令” \;


find的exec参数用来指定其他命令,以便于来处理搜索到的结果。结果的输出,需要以分号来结束,再bash环境中分号代表代码块结束,有特殊意义,所以这里需要进行转义。
vim
vim再拥有suid权限的请款下,也可以用来提权
当vim被赋予suid权限后,意味着任何用户都可以使用vim命令来编辑哪些只能由root编辑的文件,例如通过vim编辑/etc/sudoers文件(普通用户会被直接拒绝访问),再sudoers文件中配置普通用户的权限,权限和root一样
这里以test用户为例
添加如下内容:
编辑 /etc/sudoers
test ALL=(ALL:ALL) ALL
vim编辑后保存时使用wq!强制保存,vim运行时虽然是root权限, 但是wq依然会提示只读
查看权限已经是all了
sudo bash 就会获得一个root的shell
脚本
除了系统的一些可执行命令,自己写的可执行文件也可添加suid权限,不论c或者go或者其他语言都可以,这里用c为例
示例代码如下
使用gcc进行编译
给suid权限
测试提权
更多命令参考
https://gtfobins.github.io
