docker逃逸漏洞復現(CVE-2019-5736)


概述

2019年2月11日,runC的維護團隊報告了一個新發現的漏洞,SUSE Linux GmbH高級軟件工程師Aleksa Sarai公布了影響Docker, containerd, Podman, CRI-O等默認運行時容器runc的嚴重漏洞CVE-2019-5736。漏洞會對IT運行環境帶來威脅,漏洞利用會觸發容器逃逸、影響整個容器主機的安全,最終導致運行在該主機上的其他容器被入侵。漏洞影響AWS, Google Cloud等主流雲平台。日前,該容器逃逸漏洞的PoC利用代碼已在GitHub上公布。這是CVE-2019-5736漏洞利用的Go語言實現。漏洞利用是通過覆寫和執行主機系統runc二進制文件完成的。

漏洞原理

漏洞點在於runC,RunC是一個容器運行時,最初是作為Docker的一部分開發的,后來作為一個單獨的開源工具和庫被提取出來。作為“低級別”容器運行時,runC主要由“高級別”容器運行時(例如Docker)用於生成和運行容器,盡管它可以用作獨立工具。像Docker這樣的“高級別”容器運行時通常會實現鏡像創建和管理等功能,並且可以使用runC來處理與運行容器相關的任務:創建容器、將進程附加到現有容器等。在Docker 18.09.2之前的版本中使用了的runc版本小於1.0-rc6,因此允許攻擊者重寫宿主機上的runc 二進制文件,攻擊者可以在宿主機上以root身份執行命令。

利用方式

宿主機利用攻擊者提供的image來創建一個新的container 。擁有container root權限,並且該container后續被docker exec attach。

一句話描述,docker 18.09.2之前的runc存在漏洞,攻擊者可以修改runc的二進制文件導致提權。

影響版本

docker version <=18.09.2 RunC version <=1.0-rc6

環境安裝

第一步:卸載已將安裝的docker

$ sudo apt-get remove docker docker-engine docker-ce docker.io

第二步:安裝前准備

1、更新索引包

$ sudo apt-get update

2、安裝以下包,以使 apt 可以通過 https 使用 repository

$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

3、添加Docker官方的GPG密鑰並更新索引包

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

第三步 安裝指定的docker版本

1、列出可用版本

apt-cache madison docker-ce

2、選擇一個版本來安裝

$ sudo apt-get install docker-ce=<VERSION> 比如: $ sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

3、查看是否安裝正常

$ sudo systemctl start docker $ docker info

查看版本是否正確

 

漏洞復現

1、生成payload

下載CVE-2019-5736編譯go腳本生成攻擊payload。(https://github.com/Frichetten/CVE-2019-5736-PoC),將go腳本中的命令修改為反彈shell(附件)

將此內容進行更改,設置nc監聽地址。

編譯生成payload(需要go環境,壓縮包已在文件中,安裝參考https://www.jianshu.com/p/c43ebab25484 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

建議打快照,漏洞復現完成會造成docker無法使用。

2、攻擊

將該payload拷貝到docker容器中(這就是模擬攻擊者獲取了docker容器權限,在容器中上傳payload進行docker逃逸)

執行payload,等待受害者去啟動docker容器。(如果ctf比賽選手說容器啟動有問題,引誘管理員啟動docker就中招了)

xshell重新打開一個選項卡,進入容器。(sh啟動)

攻擊者開啟nc監聽

受害者啟動docker容器時,觸發payload,成功反彈shell。

解決方案

升級docker到最新的版本,可以讓你的計算機免受攻擊。

注:轉載請注明本地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM