如何进行Apache Struts2 S2-057远程代码执行漏洞分析


这篇文章给大家介绍如何进行Apache Struts2 S2-057远程代码执行漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。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.34Apache Struts 2.5 – Struts 2.5.16CVE-2018-117761.下载:http://archive.apache.org/dist/struts/2.3.34/struts-2.3.34-all.zip2. 修改配置文件struts-actionchaining.xml该漏洞有多种攻击向量包括:Redirect actionAction chainingPostback result以第一种为例子,修改配置文件内容为:
在DefaultActionMapper这个类的parseNameAndNamespace方法里。当alwaysSelectFullNamespace被设置为true时,namespace的值是从URL中获取的。URL是可控的,所以namespace也是可控的。Action执行结束之后,程序会调用ServletActionRedirectResult类中的execute()方法进行重定向Result的解析。首先,当namespace为空时,调用invocation.getProxy().getNamespace()赋值给变量namespace,然后将变量namespace传入ActionMapping构造函数中。然后,ActionMapper.getUriFromActionMapping()对ActionMapping后的值进行重组,生成一个URL字符串(包含namespace),并赋值给了tmplocation变量。紧接着将带有namespace的tmplocation传入了setLocation()方法中。该方法将tmpLocation值赋值给了StrutsResultSupport类中的location变量。然后,跟踪super.execute()方法。继续跟踪ServletActionResult类中的super.execute()。在StrutsResultSupport类中的execute()方法中,刚刚被赋值的location变量(带有namespace的)被传入了conditionalParse()方法。最终,通过TextParseUtil.translateVariables()对namespace进行OGNL解析,导致远程代码执行漏洞。1. 访问url 为/${(111+111)}/actionChain1.action的地址。访问触发OGNL表达式,url变为/222/register2.action,漏洞存在。2. payload:此payload 仅适用于2.3系列版本。目前官方已发布最新版本来修复此漏洞,受影响的用户请尽快升级到Apache Struts 2.3.35 或 Struts 2.5.17版本:https://struts.apache.org/download.cgi#struts2517。修改配置文件:固定package标签页以及result的param标签页的namespace值,以及禁止使用通配符。关于如何进行Apache Struts2 S2-057远程代码执行漏洞分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: CISCO ASA NAT配置

思科ASA防火墙8.3版与8.4版NAT的配置方法对比现在思科ASA防火墙已经升级到8.4,从8.3开始很多配置都有颠覆性的不同,特别是NAT配置很不一样,使用了object/object-group的新方式场景一:内网流量访问外网时都转换为接口的公网地址,此…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/07 10:23
下一篇 02/07 10:24