快讯:Struts 2 再曝高危远程代码执行漏洞

快讯:Struts 2 再曝高危远程代码执行漏洞

概述

Apache Struts 2是一个用于开发Java EE网路应用程式开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。 缘起于Apache StrutsWebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布(full release)版本释出。

Struts 2 showcase应用中存在远程代码执行的严重漏洞。

目前Struts 2官方已经确认该漏洞,漏洞危害程度为高危。

该漏洞触发需要非默认插件struts 2-struts1-plugin

需要手动寻找程序中将客户端参数值添加入行动消息的点

漏洞编号

影响

Struts 2.3.x系列中的Showcase应用

解决方案

向ActionMessage传递原始消息时使用类似下面的资源键值,不要直接传递原始数值

messages.add(“msg”, new ActionMessage(“struts1.gangsterAdded”, gform.getName()));

值不应如此:

messages.add(“msg”, new ActionMessage(“Gangster “ + gform.getName() + “ was added”));



注:远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。 由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。命令注入攻击中WEB服务器没有过滤类似system(),eval(),exec()等函数是该漏洞攻击成功的最主要原因。
编辑于 2017-07-07

文章被以下专栏收录

    本专栏旨在: 1.分享国内外网络安全大事件。 2.科普网络安全。 3.分享技术。 欢迎投稿