前言
2018年8月22日,Apache Strust2發布最新安全公告,Apache Struts2存在遠端程式碼執行的高風險漏洞(S2-057/CVE-2018-11776),該漏洞由Semmle Security Research team的安全研究員Man YueMo發現。
該漏洞是由於在Struts2開發框架中使用namespace功能定義XML配置時,namespace值未被設定且在上層動作配置(Action Configuration)中未設定或用通配符namespace,可能導致遠端程式碼執行。同理,url標籤未設定value和action值且上層動作未設定或用通配符namespace時也可能導致遠端程式碼執行,經過筆者自建環境成功復現漏洞且可以執行指令回顯,文末有你們想要的!
漏洞利用
筆者搭的環境分別是Strust2 2.3.20版本和Strust2 2.3.34版本,漏洞利用大致分為三種方式:數值計算、彈出計算器、命令回顯。
2.1 數值計算
數值計算相對最簡單,在URL上指定%{100 200} 就可以發生跳轉,得到計算的結果
#2.2 彈出計算器
2.3.20版本的POC如下:
2.3.3 4版本參考的POC如下:
2.3 指令回顯
兩個版本都是利用com.opensymphony.xwork2. dispatcher.HttpServletResponse物件去列印指令執行後的回顯資料
#2.3.20版本的POC如下:
2.3.34版本的POC如下:
攻擊後效果如下圖
漏洞分析
在分析漏洞之前,需要設定struts.xml文件,這個文件就是struts2的核心設定文件,大多數的時候增減配置都需要操控這裡;
總共兩處要注意,第一個一定要配置struts.mapper .alwaysSelectFullNamespace = true ,否則不能觸發漏洞,這個配置的目的是設定是否一直在最後一個斜線之前的任何位置選定NameSpace;第二處result標籤返回的類型選擇“ redirectAction 或chain“ , 只有這兩個配置選項的值是可以將action轉送或重定向;關於type具體可以參考下圖
#說完了配置,開始動態分析。漏洞位於
struts2-core.jar!/org/apache/struts2/dispatcher/ServletActionRedirectResult.class
this.namespace這個成員的值來自於getNamespace()方法,再透過getUriFromActionMapping()傳回URI字串;
透過getUriFromActionMapping取得的值賦給了tmpLocation變量,接著表達式進入setLocation方法
再彈出計算器後獲得lastFinalLocation的值為當前執行後的句柄,這個值作為響應跳轉的action地址,也就是在瀏覽器中彈出計算器後在地址列中出現的URI
到這裡彈出計算器的分析到此為止,接下來看下基於指令執行回顯結果的分析,基本上流程和上述一樣,唯一不同之處lastFinalLocation傳回的值是NULL,這也引發出提交後沒有做302的跳轉,依舊是當前的action,並且回傳的值是200
知道原理後小同事用python實現了exp檢測腳本,此腳本用途僅供學習研究;
防禦措施
1. 將框架版本升級到官方最新版本;
2. 對於Web應用來說,盡量確保程式碼的安全性;
3. 對於IDS規則層面來說,數值計算與彈計算器回傳的狀態碼都是302,且Location跳躍欄位含有特徵句柄字串;如果是指令回顯傳回的200狀態碼,且有指令結果輸出;
以上是Struts2-057 兩個版本RCE漏洞實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具