您好,登錄后才能下訂單哦!
這篇文章跟大家分析一下“如何進行Struts2-057遠程代碼執行漏洞復現”。內容詳細易懂,對“如何進行Struts2-057遠程代碼執行漏洞復現”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠對大家有所幫助。下面跟著小編一起深入學習“如何進行Struts2-057遠程代碼執行漏洞復現”的知識吧。
Apache Struts是美國阿帕奇(Apache)軟件基金會負責維護的一個開源項目Struts2框架是一個用于開發Java EE網絡應用程序的開放源代碼網頁應用程序架構。它利用并延伸了Java Servlet API,鼓勵開發者采用MVC架構。Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更加整潔的MVC設計模式實現的Web應用程序框架。
0x01漏洞概述
漏洞產生于網站配置XML時如果沒有設置namespace的值,并且上層動作配置中并沒有設置或使用通配符namespace時,可能會導致遠程代碼執行漏洞的發生。同樣也可能因為url標簽沒有設置value和action的值,并且上層動作并沒有設置或使用通配符namespace,從而導致遠程代碼執行漏洞的發生。
0x02影響版本
Apache Struts 2.3–Struts 2.3.34
Apache Struts 2.5–Struts 2.5.16
0x03環境搭建
1. 這里使用vulhub的docker環境進行搭建,vulhub下載地址:
https://github.com/vulhub/vulhub
2. 下載完成后安裝docker-compose //安裝方法自行搜索,安裝完成后進入vulhub cd /home/demo/vulhub-master/struts2/s2-057/目錄下使用
docker-compose up -d 拉取鏡像
3.底下顯示done表示拉取成功,在瀏覽器訪問http://IP:8080/struts2-showcase可以看到Struts2測試頁面表示搭建成功。
4.漏洞利用條件
4.1 alwaysSelectFullNamespace被設置為true,此時namespace的值是從URL中獲取的。URL是可控的,所以namespace也是可控的。
4.2 action元素沒有名稱空間屬性集,或者使用通配符。該名稱空間將由用戶從URL傳遞并解析為OGNL表達式,最終導致遠程代碼執行的脆弱性。
0x04漏洞復現
1.在url處輸入http://IP:8080/struts2-showcase/${(123+123)}/actionChain1.action后刷新可以看到中間數字位置相加了。
2.修改中間${(123+123)}位置的payload替換用代碼執行編寫成命令執行的exp,這一步使用burp抓包修改可以直觀的看到結果
Payload: //注:payload需要使用url編碼
3.抓包發送到Repeater(重放)模塊,在url加上url編碼的paylaod,然后發送即可在頭部看到回顯結果
0x05修復建議
1. 臨時解決方案:上層動作配置中沒有設置或使用通配符namespace時,驗證所有XML配置中的namespace,同時在JSP中驗證所有url標簽的value和action。
2. 官方已發布最新版本來修復此漏洞,受影響的用戶請盡快升級到Apache Struts 2.3.35 或 Struts 2.5.17版
關于如何進行Struts2-057遠程代碼執行漏洞復現就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意小編的更新。謝謝大家關注一下億速云網站!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。