您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何進行Struts2 S2-057漏洞環境搭建及漏洞分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
官方對這次漏洞的描述是:
1.定義XML配置時如果namespace值未設置且上層動作配置(Action Configuration)中未設置或用通配符namespace時可能會導致遠程代碼執行。
2.url標簽未設置value和action值且上層動作未設置或用通配符namespace時可能會導致遠程代碼執行。
具體分析可參考:
https://www.freebuf.com/vuls/182006.html
1)下載官方源碼:
git clone https://github.com/apache/Struts.git
2)切換到2.5.12分支:
git checkout STRUTS_2_5_10
3) 把源碼包中src/apps/showcase整個文件夾拷貝出來,新建一個項目
4)用IDEA或者eclipse導入該maven項目
5)修改src/main/resoureces中的配置文件struts-actionchaining.xml,改成:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts><package name="actionchaining" extends="struts-default"><action name="actionChain1" class="org.apache.struts2.showcase.actionchaining.ActionChain1"><result type="redirectAction"><param name = "actionName">register2</param></result></action></package> </struts>
訪問http://localhost:8080/struts2-showcase/%24{1+2}/actionChain1.action
url重新redirect到:http://localhost:8080/struts2-showcase/3/register2.action
并對location中的1+2進行了計算,產生了ognl注入
首先,strut2中對默認result對象的處理過程。這些默認result type都要經過 com/opensymphony/xwork2/DefaultActionInvocation.java處理
會調用這個具體result對象(redirectAction)的excute方法。
注意到struts-actionchaining.xml配置文件中,<result>標簽的type是redirectAction,所以對應地找出redirectAction的處理類:org.apache.struts2.result.ServletActionRedirectResult,并且在execute方法處下斷點
發送請求:http://localhost:8080/struts2-showcase/%24{1+2}/actionChain1.action
程序跳到斷點處,往下執行后,由于在配置xml時沒有指定namespace,所以這里的namespace為null,則對namespace重新賦值為/${1+2}
最終將location設置為/${1+2}/register2.action
在 super.execute(invocation)處繼續f5進入函數內,最終跟蹤到StrutsResultSupport的execute方法
這邊的location值為/${1+2}/register2.action,最終對ognl表達式執行后得到/3/register2.action
至此,ognl表達式成功執行。
將框架版本升級到官方最新版本
以上就是如何進行Struts2 S2-057漏洞環境搭建及漏洞分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。