Apache Struts2 再曝高危漏洞,深信服助您進行本地檢測
近日,Apache Struts2 發(fā)布的最新安全公告S2-029中顯示,Struts2 存在遠程代碼執(zhí)行漏洞。Struts 2.0.0 – Struts2.3.24.1 版本均受到該漏洞影響。這個漏洞危險級別被定義為高危,漏洞 CVE 編號:CVE-2016-0785。目前,深信服提供了Apache Struts2 S2-029 遠程代碼執(zhí)行漏洞的本地檢測方案。
背景介紹
Struts2 是全球使用最廣泛的 Javaweb 服務器框架之一。Struts2 是 Struts 的下一代產品,是在 struts1和 WebWork 的技術基礎上進行了合并的全新的 Struts2 框架。
之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在遠程命令執(zhí)行漏洞,使得大量的網(wǎng)站系統(tǒng)遭受入侵。因此,該漏洞一經(jīng)曝光就在安全圈內引起軒然大波。
漏洞概要
S2-029 漏洞產生原因主要在于,Struts2的標簽庫使用 OGNL 表達式來訪問 ActionContext 中的對象數(shù)據(jù),為了能夠訪問到ActionContext 中的變量,Struts2 將 ActionContext 設置為 OGNL 的上下文,并將 OGNL 的根對象加入 ActionContext 中。
用戶可以控制特定標簽的屬性,通過 OGNL 二次計算可以執(zhí)行任意命令。例如:
parameters:
這個標簽就調用了 OGNL 進行取值,Struts2 會解析 value 中的值,并當作 OGNL 表達式進行執(zhí)行。
OGNL第一次計算:
OGNL表達式為 #parameters.msg,計算后得到 parameters的屬性,并將其屬性值賦值給 value。
OGNL第二次計算:
對上面獲取的屬性值繼續(xù)做 OGNL表達式執(zhí)行。
漏洞檢測
深信服提供了Apache Struts2 S2-029 遠程代碼執(zhí)行漏洞的本地檢測方案:
1、新建文件test.jsp,文件內容如下圖所示:
2、將上述test.jsp文件放入網(wǎng)站根目錄;
3、打開瀏覽器訪問文件test.jsp,例如:http://www.xxx.com/test.jsp;
4、查看網(wǎng)站服務器 /tmp 目錄下是否有sangfor_test文件生成,若有此文件生成,則證明網(wǎng)站存在Apache Struts2 S2-029 遠程代碼執(zhí)行漏洞。
該檢測方案已在深信服下一代防火墻主頁進行實時提醒,如果您未購買下一代防火墻設備,請訪問深信服安全中心獲取檢測工具:
http://sec.sangfor.com.cn/vulns/287.html
修復建議
1、建議用戶嚴格驗證新添加的 Struts 標簽參數(shù)的屬性;
2、建議用戶將Struts升級至 2.3.26版本;
3、對于暫時無法進行升級的低版本用戶,建議修改系統(tǒng) RestActionMapper.java 源文件,防止 OGNL 表達式多次執(zhí)行,具體修改方法如下圖:
點擊以下鏈接,即可訪問深信服安全中心獲取檢測工具:
http://sec.sangfor.com.cn/vulns/287.html