欧美极品在线观看不卡|国产精品Va免费视频|国产国产人无码在线免费|亚洲精品无码九九九九九|亚洲国产综合精品久久久久|成人国产在线观看高清不卡|制服诱惑一区二区三区六区|国产一区二区精品高清在线观看

新聞中心

Struts2高危漏洞S2-048動態(tài)分析

作者 / 無憂主機(jī) 時間 2017-10-19 14:30:31

綜述 2017年7月7日,Apache Struts發(fā)布最新的安全公告,Apache Structs2的strus1插件存在遠(yuǎn)程代碼執(zhí)行的高危漏洞,漏洞編號為CVE-2017-9791(S2-048)。攻擊者可以構(gòu)造惡意的字段值通過Struts2的struts2-struts1-plugin的插件,遠(yuǎn)程執(zhí)行代碼 漏洞分析 (1) 漏洞簡介 Apache Struts2.3.x系列版本中struts2-struts1-plugin存在遠(yuǎn)程代碼執(zhí)行漏洞,進(jìn)而導(dǎo)致任意代碼執(zhí)行。 (2) 漏洞分析 官方的漏洞描述如下: 從官方的漏洞描述我們可以知道,這個漏洞本質(zhì)上是在struts2-struts1-plugin這個jar包上。這個庫是用將struts1的action封裝成struts2的action以便在strut2上使用。本質(zhì)原因還是在struts2-struts1-plugin包中Struts1Action.java中execute函數(shù)調(diào)用了getText函數(shù),這個函數(shù)會執(zhí)行ognl表達(dá)式,更可惡的是getText的輸入內(nèi)容還是攻擊者可控的。以下分析基于struts2的官方示例struts2-showcase war包。首先Struts1Action的execute方法代碼如下,從紅框中信息可以看出其實(shí)質(zhì)是調(diào)用SaveGangsterAction.execute方法,然后再調(diào)用getText(msg.getKey()….)。 1 在struts2-showcase的integration模塊下有SaveGangsterAction.java的execute方法的實(shí)現(xiàn)。具體如下: 2 在這個方法中就帶入有毒參數(shù)gforn.getName()放到了messages結(jié)構(gòu)中,而gform.getName()的值是從客戶端獲取的。Gangsterform.getName()的實(shí)現(xiàn)如下: 3 我們這里傳入了${1+1}。有毒參數(shù)已經(jīng)帶入,就差ognl表達(dá)式。繼續(xù)回到Struts1Action.java的execute方法下半部分,這里有g(shù)etText()的入口,能清晰看到參數(shù)已經(jīng)被污染,具體如下圖: 4 下面進(jìn)入getText的實(shí)現(xiàn)函數(shù):這個調(diào)用棧比較深,首先我們給出棧圖: 5 從Struts1action.execute函數(shù)開始,到ActionSupport的getText()方法,方法如下: 6 接著進(jìn)入TextProviderSuppport.getText,接著調(diào)用其另一個重載類方法getText(),示例如下: 7 如圖所示,進(jìn)入LocalizeTextUtil.findText,繼續(xù)分析其實(shí)現(xiàn):從名字上也能看出其是根據(jù)用戶的配置做一些本地化的操作。代碼如下: 8 熟悉struts2的童鞋跟到這一步就能發(fā)現(xiàn)這就是一個很典型的ognl表達(dá)式入口,先是得到一個valueStack,再繼續(xù)遞歸得到ognl表達(dá)式的值。 這里不再描述,詳情可參考官方鏈接:https://struts.apache.org/maven/struts2-core/apidocs/com/opensymphony/xwork2/util/LocalizedTextUtil.html

本文地址:http://www.gle-technology.com/safety/25463.html

1
1
1
1
1
1
1

客戶服務(wù)熱線

0791-8623-3537

在線客服