新聞中心
Struts2高危漏洞S2-048動態分析
綜述
2017年7月7日,Apache Struts發布最新的安全公告,Apache Structs2的strus1插件存在遠程代碼執行的高危漏洞,漏洞編號為CVE-2017-9791(S2-048)。攻擊者可以構造惡意的字段值通過Struts2的struts2-struts1-plugin的插件,遠程執行代碼
漏洞分析
(1) 漏洞簡介
Apache Struts2.3.x系列版本中struts2-struts1-plugin存在遠程代碼執行漏洞,進而導致任意代碼執行。
(2) 漏洞分析
官方的漏洞描述如下:
從官方的漏洞描述我們可以知道,這個漏洞本質上是在struts2-struts1-plugin這個jar包上。這個庫是用將struts1的action封裝成struts2的action以便在strut2上使用。本質原因還是在struts2-struts1-plugin包中Struts1Action.java中execute函數調用了getText函數,這個函數會執行ognl表達式,更可惡的是getText的輸入內容還是攻擊者可控的。以下分析基于struts2的官方示例struts2-showcase war包。首先Struts1Action的execute方法代碼如下,從紅框中信息可以看出其實質是調用SaveGangsterAction.execute方法,然后再調用getText(msg.getKey()….)。
在struts2-showcase的integration模塊下有SaveGangsterAction.java的execute方法的實現。具體如下:
在這個方法中就帶入有毒參數gforn.getName()放到了messages結構中,而gform.getName()的值是從客戶端獲取的。Gangsterform.getName()的實現如下:
我們這里傳入了${1+1}。有毒參數已經帶入,就差ognl表達式。繼續回到Struts1Action.java的execute方法下半部分,這里有getText()的入口,能清晰看到參數已經被污染,具體如下圖:
下面進入getText的實現函數:這個調用棧比較深,首先我們給出棧圖:
從Struts1action.execute函數開始,到ActionSupport的getText()方法,方法如下:
接著進入TextProviderSuppport.getText,接著調用其另一個重載類方法getText(),示例如下:
如圖所示,進入LocalizeTextUtil.findText,繼續分析其實現:從名字上也能看出其是根據用戶的配置做一些本地化的操作。代碼如下:
熟悉struts2的童鞋跟到這一步就能發現這就是一個很典型的ognl表達式入口,先是得到一個valueStack,再繼續遞歸得到ognl表達式的值。
這里不再描述,詳情可參考官方鏈接:https://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/util/LocalizedTextUtil.html
本文地址:http://www.mishkantour.com/safety/25463.html
相關推薦
- Olivia gets a dildo while she sucks my dick, Charlotte fucks her with a dildo
- Monica has a morning of licking and fucking her dog Bone.
- My delivery drivers to sexy not to fuck.
- The Unexposed Hidden knowledge of Find Foreign Birdes-to-be For Relationship 99brides. com
- The Unexposed Hidden knowledge of Find Foreign Birdes-to-be For Relationship 99brides. com
- ?#1 Transgender Dating: Translr On The App?Store
- ?#1 Transgender Dating: Translr On The App?Store
- Tips On How To Find A Sugar Child In Las Vegas
- Taking my wife Margie from being a ‘good’ wife, to being a ‘fucking whore’.
- Tips On How To Find A Sugar Child In Las Vegas






