本地提权漏洞是一类允许攻击者从普通用户权限提升到更高权限(如管理员或系统权限)的安全漏洞。攻击者通常已在系统中获得了低权限访问,利用此类漏洞进一步控制系统、窃取敏感信息或持久驻留。
在多用户系统中,操作系统通过权限模型控制不同用户的访问范围。本地提权漏洞通常利用操作系统或软件实现中的设计缺陷、权限检查不当、资源竞争等问题,绕过正常的权限控制机制,获得更高权限。
| 类型 | 描述 |
|---|---|
| 权限验证缺失或错误 | 开发者未对敏感操作做权限验证,或验证逻辑有缺陷 |
| 任意文件写入 | 普通用户可写入系统敏感位置,如 /etc/passwd、计划任务 |
| DLL 劫持 / 加载 | 通过放置恶意库文件,在高权限进程中被加载执行 |
| 软/硬链接攻击 | 利用符号链接或硬链接,配合系统任务访问不该访问的文件 |
| SUID 程序利用(Linux) | 滥用带有 SUID 权限的程序执行特权命令 |
| 注册表 / 服务配置劫持 | Windows 系统下对服务的可配置内容做劫持,如 ImagePath |
| TOCTOU(时间竞争) | 在文件检查和使用之间修改资源路径,实现权限绕过 |
| 内核漏洞 | 利用操作系统内核缺陷直接提权,如内存越界、UAF、越权访问 |
以 Linux 系统中常见的 SUID 程序漏洞为例:
-rwsr-xr-x 1 root root 12345 Apr 1 10:00 /usr/bin/vuln_prog
vuln_prog 调用外部命令 ls,但未使用绝对路径:
system("ls");
echo "/bin/sh" > /tmp/ls
chmod +x /tmp/ls
export PATH="/tmp:$PATH"
/usr/bin/vuln_prog
描述:Polkit 的 pkexec 工具中存在环境变量处理不当的问题,导致非特权用户可利用它任意执行命令并获得 root 权限。
影响系统:几乎所有主流 Linux 发行版(如 Ubuntu、Debian、CentOS)
利用流程:
# 漏洞利用代码(简略)
gcc exploit.c -o exploit
./exploit
# 提权成功,获得 root shell
参考链接:
本地提权漏洞是攻击链中非常关键的一步,尤其是在攻击者已获取初始 foothold 后。防御措施应从系统配置、权限模型、程序设计到监控日志等多层面进行加固。