Vulnerability-wiki

本地提权漏洞(Local Privilege Escalation, LPE)

本地提权漏洞是一类允许攻击者从普通用户权限提升到更高权限(如管理员或系统权限)的安全漏洞。攻击者通常已在系统中获得了低权限访问,利用此类漏洞进一步控制系统、窃取敏感信息或持久驻留。


一、原理概述

在多用户系统中,操作系统通过权限模型控制不同用户的访问范围。本地提权漏洞通常利用操作系统或软件实现中的设计缺陷、权限检查不当、资源竞争等问题,绕过正常的权限控制机制,获得更高权限。


二、常见类型

类型 描述
权限验证缺失或错误 开发者未对敏感操作做权限验证,或验证逻辑有缺陷
任意文件写入 普通用户可写入系统敏感位置,如 /etc/passwd、计划任务
DLL 劫持 / 加载 通过放置恶意库文件,在高权限进程中被加载执行
软/硬链接攻击 利用符号链接或硬链接,配合系统任务访问不该访问的文件
SUID 程序利用(Linux) 滥用带有 SUID 权限的程序执行特权命令
注册表 / 服务配置劫持 Windows 系统下对服务的可配置内容做劫持,如 ImagePath
TOCTOU(时间竞争) 在文件检查和使用之间修改资源路径,实现权限绕过
内核漏洞 利用操作系统内核缺陷直接提权,如内存越界、UAF、越权访问

三、利用方式示例

以 Linux 系统中常见的 SUID 程序漏洞为例:

  1. 某程序拥有 SUID 权限:
    -rwsr-xr-x 1 root root 12345 Apr 1 10:00 /usr/bin/vuln_prog
    
  2. vuln_prog 调用外部命令 ls,但未使用绝对路径:
    system("ls");
    
  3. 攻击者创建恶意脚本并伪造环境变量:
    echo "/bin/sh" > /tmp/ls
    chmod +x /tmp/ls
    export PATH="/tmp:$PATH"
    /usr/bin/vuln_prog
    
  4. 成功获取 root shell。

四、防御建议


五、真实案例参考

案例:CVE-2021-4034(PwnKit)

描述:Polkit 的 pkexec 工具中存在环境变量处理不当的问题,导致非特权用户可利用它任意执行命令并获得 root 权限。

影响系统:几乎所有主流 Linux 发行版(如 Ubuntu、Debian、CentOS)

利用流程

# 漏洞利用代码(简略)
gcc exploit.c -o exploit
./exploit
# 提权成功,获得 root shell

参考链接


六、总结

本地提权漏洞是攻击链中非常关键的一步,尤其是在攻击者已获取初始 foothold 后。防御措施应从系统配置、权限模型、程序设计到监控日志等多层面进行加固。