您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么進行Apache Struts 2 遠程代碼執行漏洞CVE-2018-11776的分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Apache軟件基金會在Apache Struts中宣布了一個最新的遠程代碼執行漏洞,Apache Struts是一個現在較為主流的開源框架,是用于使用Java編程語言開發Web應用程序。目前使用Apache Struts部分版本開發的應用程序可能存在漏洞。該漏洞對應的CVE編號為CVE-2018-11776。
誰應該讀這個 | 所有Struts 2的開發者和用戶 |
---|---|
漏洞的影響 | 可能的遠程代碼執行使用沒有namespace和同時的結果時,其上面的操作沒有或沒有通配符namespace。使用url沒有value和action設置的標簽時的可能性相同。 |
最高安全等級 | 危急 |
建議 | 升級到Struts 2.3.35 或Struts 2.5.17 |
受影響的軟件 | Struts 2.3 - Struts 2.3.34 ,Struts 2.5 - Struts 2.5.16 不受支持的Struts版本也可能受到影響 |
記者 | 來自Semmle安全研究團隊的Man Yue Mo. |
CVE 標識符 | CVE-2018-11776 |
修改struts核心配置文件struts-actionchaining.xml,沒有為namespace賦值,并且配置了重定向action。
在ActionChain1中,添加execute的調試方法進行驗證。
http://localhost:8080/struts2-showcase/${(333+333)}/actionChain1.action,OGNL表達式順利的被執行
執行到execute方法。
已跳轉到指定的action頁面register2。
輸入特定的payload,觸發漏洞,彈出計算器。
1.使用Struts 2.3 - Struts 2.3.34,Struts 2.5 - Struts 2.5.16范圍內的Apache Struts版本。
2.在struts核心配置XML上層action中“namespace”值為缺省值時,或“namespace”通配符為(“/*”)時可能會導致web應用遠程代碼執行漏洞。
3.在struts配置“struts.mapper.alwaysSelectFullNamespace = true”,配置此屬性的目的是,是否在最后一個斜線之前的任何位置選定”NameSpace”。
4.在struts核心配置XML文件中配置result標簽返回的類型選擇 “type= redirectAction” , 這個類型是為了將用戶重定向到一個已定義的好的action。
“DefaultActionMapper”調用”parseNameAndNamespace()”用來解析“namenamespace”和”name”。
當alwaysSelectFullNamespace 的value值為true時,namespace的值可通過uri控制。
執行完action后,ServletActionRedirectResult調用execute()進行重定向Result,通過ActionMapper.getUriFromActionMapping()對namespace和name進行重新定義,然后用setLocation()將帶namespace的location放入父類StrutsResultSupport中。
父類StrutsResultSupport拿到location后,通過TextParseUtil.translateVariables()調用OgnlTextParser的evaluate方法,此方法就是最終解釋Ognl表達式的語句,所以最終導致解析執行url中的OGNL表達式。
建議將Apache Struts升級到最新版本2.3.35或是Apache Struts最新版本2.5.17,直接升級即可官方已經做好漏洞補丁,預計不會出現向后不兼容的問題。
以上就是怎么進行Apache Struts 2 遠程代碼執行漏洞CVE-2018-11776的分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。