GeoServer是一個用Java編寫的開源軟件服務器,允許用戶共享和編輯地理空間數據。它為提供交互操作性而設計,使用開放標準發布來自任何主要空間數據源的數據。GeoServer存在遠程代碼執行漏洞(CVE-2024-36401),未經身份認證的遠程攻擊者可以通過該漏洞在服務器上執行任意代碼,從而獲取服務器權限。在版本 2.23.6、2.24.4 和 2.25.2 之前,多個 OGC 請求參數允許未經身份驗證的用戶通過針對默認GeoServer 安裝的特制輸入進行遠程代碼執行(RCE),因為將屬性名稱評估為 XPath 表達式會不安全。
GeoServer 調用的 GeoTools 庫 API 評估要素類型的屬性/屬性名稱,從而不安全地將它們傳遞給 commons-jxpath 庫,該庫在評估 XPath 表達式時可以執行任意代碼。此 XPath 評估僅供復雜要素類型(即應用程序架構數據存儲)使用,但未錯誤地應用于簡單要素類型,使得此漏洞適用于 **ALL** GeoServer 實例。未提供公開 PoC,但已確認可通過 WFS GetFeature、WFS GetPropertyValue、WMS GetMap、WMS GetFeatureInfo、WMS GetLegendGraphic 和 WPS Execute 請求利用此漏洞。
此漏洞可導致執行任意代碼。版本 2.23.6、2.24.4 和 2.25.2 包含針對該問題的修補程序。解決方法是從GeoServer中刪除“gt-complex-x.y.jar”文件,其中“x.y”是GeoTools版本(例如,如果運行GeoServer 2.25.1,則為“gt-complex-31.1.jar”)。這將從GeoServer中刪除易受攻擊的代碼,但可能會破壞某些GeoServer功能,或者在需要gt-complex模塊時阻止GeoServer部署。
經過開源網安RASP團隊分析,該漏洞與CVE-2022-41852漏洞具有很高的相關性。
漏洞特性
漏洞危害等級 | 高 |
觸發方式 | 網絡遠程權限 |
認證要求 | 無需任何權限系統 |
配置要求 | 默認配置可利用用戶 |
交互要求 | 無需用戶交互 |
利用成熟度 | POC/EXP 未公開 |
批量可利用性 | 可使用通用?POC/EXP |
批量檢測/利用修復復雜度 | 低,官方提供緩解、修復方案 |
影響版本
GeoServer < 2.23.6
2.24.0 <= GeoServer < 2.24.4
2.25.0 <= GeoServer < 2.25.2
攻擊效果
運行應用
未安裝RASP,運行應用并發送攻擊請求,如下圖:
可以看出,當使用以下參數:
請求:
如圖所示,執行了遠程代碼,exec(java.lang.Runtime.getRuntime(),'touch%20/tmp/success1')。
防護效果
安裝RASP,再次請求:
響應被攔截。RASP平臺針對該請求共檢測出3條攻擊行為,分別為:命令注入、不安全的反射、遠程命令/代碼執行漏洞(RCE)。
不安全的反射:
遠程命令/代碼執行漏洞(RCE):
命令注入:
綜上所述,證明RASP可針對CVE-2024-36401漏洞從多個角度進行檢測。
參考資料
https://github.com/advisories/GHSA-6jj6-gm7p-fcvv
推薦閱讀
經驗分享 | 科研行業如何搭建RASP防護體系?
干貨分享 | WAF與RASP對比 【附:任意文件上傳漏洞防護實例】