十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章跟大家分析一下“如何進(jìn)行Struts2-057遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)”。內(nèi)容詳細(xì)易懂,對(duì)“如何進(jìn)行Struts2-057遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)”感興趣的朋友可以跟著小編的思路慢慢深入來(lái)閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“如何進(jìn)行Struts2-057遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)”的知識(shí)吧。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)興平免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
Apache Struts是美國(guó)阿帕奇(Apache)軟件基金會(huì)負(fù)責(zé)維護(hù)的一個(gè)開(kāi)源項(xiàng)目Struts2框架是一個(gè)用于開(kāi)發(fā)Java EE網(wǎng)絡(luò)應(yīng)用程序的開(kāi)放源代碼網(wǎng)頁(yè)應(yīng)用程序架構(gòu)。它利用并延伸了Java Servlet API,鼓勵(lì)開(kāi)發(fā)者采用MVC架構(gòu)。Struts2以WebWork優(yōu)秀的設(shè)計(jì)思想為核心,吸收了Struts框架的部分優(yōu)點(diǎn),提供了一個(gè)更加整潔的MVC設(shè)計(jì)模式實(shí)現(xiàn)的Web應(yīng)用程序框架。
0x01漏洞概述
漏洞產(chǎn)生于網(wǎng)站配置XML時(shí)如果沒(méi)有設(shè)置namespace的值,并且上層動(dòng)作配置中并沒(méi)有設(shè)置或使用通配符namespace時(shí),可能會(huì)導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞的發(fā)生。同樣也可能因?yàn)閡rl標(biāo)簽沒(méi)有設(shè)置value和action的值,并且上層動(dòng)作并沒(méi)有設(shè)置或使用通配符namespace,從而導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞的發(fā)生。
0x02影響版本
Apache Struts 2.3–Struts 2.3.34
Apache Struts 2.5–Struts 2.5.16
0x03環(huán)境搭建
1. 這里使用vulhub的docker環(huán)境進(jìn)行搭建,vulhub下載地址:
https://github.com/vulhub/vulhub
2. 下載完成后安裝docker-compose //安裝方法自行搜索,安裝完成后進(jìn)入vulhub cd /home/demo/vulhub-master/struts2/s2-057/目錄下使用
docker-compose up -d 拉取鏡像
3.底下顯示done表示拉取成功,在瀏覽器訪問(wèn)http://IP:8080/struts2-showcase可以看到Struts2測(cè)試頁(yè)面表示搭建成功。
4.漏洞利用條件
4.1 alwaysSelectFullNamespace被設(shè)置為true,此時(shí)namespace的值是從URL中獲取的。URL是可控的,所以namespace也是可控的。
4.2 action元素沒(méi)有名稱空間屬性集,或者使用通配符。該名稱空間將由用戶從URL傳遞并解析為OGNL表達(dá)式,最終導(dǎo)致遠(yuǎn)程代碼執(zhí)行的脆弱性。
0x04漏洞復(fù)現(xiàn)
1.在url處輸入http://IP:8080/struts2-showcase/${(123+123)}/actionChain1.action后刷新可以看到中間數(shù)字位置相加了。
2.修改中間${(123+123)}位置的payload替換用代碼執(zhí)行編寫成命令執(zhí)行的exp,這一步使用burp抓包修改可以直觀的看到結(jié)果
Payload: //注:payload需要使用url編碼
3.抓包發(fā)送到Repeater(重放)模塊,在url加上url編碼的paylaod,然后發(fā)送即可在頭部看到回顯結(jié)果
0x05修復(fù)建議
1. 臨時(shí)解決方案:上層動(dòng)作配置中沒(méi)有設(shè)置或使用通配符namespace時(shí),驗(yàn)證所有XML配置中的namespace,同時(shí)在JSP中驗(yàn)證所有url標(biāo)簽的value和action。
2. 官方已發(fā)布最新版本來(lái)修復(fù)此漏洞,受影響的用戶請(qǐng)盡快升級(jí)到Apache Struts 2.3.35 或 Struts 2.5.17版
關(guān)于如何進(jìn)行Struts2-057遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識(shí),請(qǐng)大家多多留意小編的更新。謝謝大家關(guān)注一下創(chuàng)新互聯(lián)網(wǎng)站!