# Docker Pentesting

Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker...

- Repository: https://github.com/wgpsec/AboutSecurity (1833 stars)
- Category: Security
- License: see repository
- Last updated: 2026-10-24
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add wgpsec/AboutSecurity --skill docker-pentesting -g -a claude-code -y`
Codex: `npx skills add wgpsec/AboutSecurity --skill docker-pentesting -g -a codex -y`
Cursor: `npx skills add wgpsec/AboutSecurity --skill docker-pentesting -g -a cursor -y`
Gemini CLI: `npx skills add wgpsec/AboutSecurity --skill docker-pentesting -g -a gemini-cli -y`

## Description

Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Docker 安全测试与容器渗透

Docker 攻击面不只有逃逸：容器配置、Docker Daemon、Registry、镜像层、构建上下文和宿主机共享内核都会形成不同的突破路径。先判断自己处在容器内、宿主机用户态还是远程 Registry/API 视角，再选择逃逸、凭据提取或供应链横向。

## 深入参考

- 容器逃逸方法的完整 payload 和利用条件 → 读 [references/escape-methods.md](references/escape-methods.md)
- Docker Registry、镜像层和构建产物 Secret 分析 → 读 [references/registry-and-image-analysis.md](references/registry-and-image-analysis.md)
- Docker Build Context 滥用（CI/CD 场景的路径穿越与 Secret 泄露）→ 读 [references/escape-methods.md](references/escape-methods.md) 第 12 节

---

## Phase 1: 攻击面确认

```bash
# 确认在容器中
cat /proc/1/cgroup 2>/dev/null | grep -qi docker && echo "IN DOCKER"
ls /.dockerenv 2>/dev/null && echo "IN DOCKER"
cat /proc/1/sched | head -1    # PID 1 不是 systemd/init → 容器

# 基础信息
hostname
cat /etc/os-release
uname -r    # 内核版本（宿主机共享）
```

## Phase 2: 逃逸条件检查清单

按成功率排序检查：

```bash
# 1. 特权容器？（最简单的逃逸）
cat /proc/1/status | grep CapEff
# 0000003fffffffff = 特权容器（拥有全部 capabilities）

# 2. Docker Socket 挂载？
ls -la /var/run/docker.sock 2>/dev/null

# 3. procfs 挂载？（core_pattern 逃逸）
# 检查是否一个在 /proc 下、一个在其他挂载路径下
find / -name core_pattern 2>/dev/null

# 4. Docker Remote API 暴露？
# 推测宿主机 IP：优先 hostname -I 取同网段 .1，为空则用 ip route 默认网关
GW=$(hostname -I 2>/dev/null | awk '{print $1}' | awk -F. '{print $1"."$2"."$3".1"}')
[ -z "$GW" ] && GW=$(ip route 2>/dev/null | awk '/default/{print $3}')
timeout 3 bash -c "echo >/dev/tcp/$GW/2375" 2>/dev/null && echo "DOCKER API EXPOSED on $GW:2375"

# 5. 宿主机目录挂载？
mount | grep -v 'overlay\|proc\|sys\|cgroup\|tmpfs\|devpts\|mqueue'
cat /proc/mounts | grep -E '^/dev/'

# 6. Docker 用户组提权？（宿主机场景）
groups | grep docker || id | grep docker
cat /etc/group | grep docker

# 7. 危险 Capabilities？
cat /proc/1/status | grep Cap
# python3 解码: python3 -c "import struct;print(bin(struct.unpack('Q',bytes.fromhex('CAPEFF_HEX'))[0]))"
# 关注: CAP_SYS_ADMIN, CAP_SYS_PTRACE, CAP_DAC_OVERRIDE, CAP_NET_ADMIN

# 8. PID namespace 共享？
ls /proc/*/exe 2>/dev/null | head -20
# 能看到大量非容器进程 → hostPID=true

The rest: https://github.com/wgpsec/AboutSecurity/blob/HEAD/skills/cloud/docker-pentesting/SKILL.md
