温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

发布时间:2021-12-22 21:02:59 来源:亿速云 阅读:176 作者:柒染 栏目:网络管理

本篇文章给大家分享的是有关怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、漏洞背景

Apache软件基金会在Apache Struts中宣布了一个最新的远程代码执行漏洞,Apache Struts是一个现在较为主流的开源框架,是用于使用Java编程语言开发Web应用程序。目前使用Apache Struts部分版本开发的应用程序可能存在漏洞。该漏洞对应的CVE编号为CVE-2018-11776。

二、漏洞概要

谁应该读这个  所有Struts 2的开发者和用户  
漏洞的影响  可能的远程代码执行使用没有namespace和同时的结果时,其上面的操作没有或没有通配符namespace。使用url没有value和action设置的标签时的可能性相同。  
最高安全等级  危急  
建议  升级到Struts 2.3.35或Struts 2.5.17  
受影响的软件  Struts  2.3 - Struts 2.3.34,Struts 2.5 - Struts 2.5.16  不受支持的Struts版本也可能受到影响  
记者  来自Semmle安全研究团队的Man Yue Mo.  
CVE标识符  CVE-2018-11776  

三、搭建环境

修改struts核心配置文件struts-actionchaining.xml,没有为namespace赋值,并且配置了重定向action。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

   在ActionChain1中,添加execute的调试方法进行验证。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

http://localhost:8080/struts2-showcase/${(333+333)}/actionChain1.action,OGNL表达式顺利的被执行

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

执行到execute方法。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

已跳转到指定的action页面register2。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

输入特定的payload,触发漏洞,弹出计算器。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

四、触发条件

1.使用Struts 2.3 - Struts 2.3.34,Struts 2.5 - Struts 2.5.16范围内的Apache Struts版本。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

2.在struts核心配置XML上层action中“namespace”值为缺省值时,或“namespace”通配符为(“/*”)时可能会导致web应用远程代码执行漏洞。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

3.在struts配置“struts.mapper.alwaysSelectFullNamespace = true”,配置此属性的目的是,是否在最后一个斜线之前的任何位置选定”NameSpace”。   

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

4.在struts核心配置XML文件中配置result标签返回的类型选择 “type= redirectAction” , 这个类型是为了将用户重定向到一个已定义的好的action。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

五、漏洞分析

“DefaultActionMapper”调用”parseNameAndNamespace()”用来解析“namenamespace”和”name”。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

当alwaysSelectFullNamespace 的value值为true时,namespace的值可通过uri控制。

怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

执行完action后,ServletActionRedirectResult调用execute()进行重定向Result,通过ActionMapper.getUriFromActionMapping()对namespace和name进行重新定义,然后用setLocation()将带namespace的location放入父类StrutsResultSupport中。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

父类StrutsResultSupport拿到location后,通过TextParseUtil.translateVariables()调用OgnlTextParser的evaluate方法,此方法就是最终解释Ognl表达式的语句,所以最终导致解析执行url中的OGNL表达式。

 怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析

六、修复建议

建议将Apache Struts升级到最新版本2.3.35或是Apache Struts最新版本2.5.17,直接升级即可官方已经做好漏洞补丁,预计不会出现向后不兼容的问题。

以上就是怎么进行Apache Struts 2 远程代码执行漏洞CVE-2018-11776的分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI