Struts2-046 网站漏洞修复补丁以及加固方案

           

           Apache Struts 2 2.3.32以及2 2.3.x版本及Apache Struts2.5.10.1之前的的
 
Jakarta Multipart解析器上传文件功能存在高危漏洞,该漏洞根源是网站程序代码
 
里没有正确处理上传的文件。导致黑客可以通过POST构造HTTP请求头中的Content-
 
Type数值,来执行远程恶意代码,S2-046与S2-045漏洞利用的是同样的上传功能变量
 
,基本上可以通杀两个版本。
 

 
影响Apache Struts2的最新远程执行恶意代码漏洞(RCE)。SINE安全工程师对此进
 
行了详细的安全审计,通过对POST请求中的Content-Type头,来跟大家介绍Struts2
 
漏洞攻击的细节。Apache Struts2漏洞分析和了解代码错误导致的危害性。
 
在实战模拟情况下,我们对其中一个客户的网站进行网站安全检测,检测时发现
 
Struts2漏洞,在对网站渗透测试的时候,除了利用已知的攻击向量漏洞之外,还可
 
以通过POST数据到Content-类型头,Sine安全公司是一家专注于:服务器安全、网站安

、网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。

 

使用JakartaStreamMultipartRequest,这个代码的意思是需要将Struts2应用程序配置

为使用不是默认的Jakarta功能。检查Struts2配置文件中的以下配置:

<constant name =“struts.multipart.parser”value =“jakarta-stream”/>

 
由Content-Length头指定的上传文件的大小大于Struts2的最大允许大小(2GB)
 
文件名包含一个OGNL有效引擎。
 
关于OGNL引擎
 
OGNL(Object Graph Navigation Language)即对象图形导航语言,是一个开源的表

达式引擎。使用OGNL,你可以通过某种表达式语法,存取Java对象树中的任意属性、调

用Java对象树的方法、同时能够自动实现必要的类型转化。如果我们把表达式看做是一

个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥

梁。我们可以轻松解决在数据流转过程中所遇到的各种问题。

 

 
Struts2 利用的是OGNL引擎,OGNL引擎在Struts2中是很牛B的,使用的范围也比较

广,所以在使用过程中,也发现了诸多的网站安全问题。黑客可以通过构造恶意参数的

数据带入OGNL表达式中去,就可以被OGNL解析并执行恶意的代码,而OGNL引擎也可

以用来获取和设置当前的Java对象的属性,也可以对服务器系统windows Linux对象进

行修改,所以只要绕过Struts2的一些安全策略,黑客甚至可以执行系统命令进行系统攻

击。Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站漏洞修

复,渗透测试,安全服务于一体的网络安全服务提供商。
 
 
Struts 漏洞修复建议
 
严格的过滤 Content-Type 、filename里的内容,禁止ognl引擎表达式相关字段。
 
使用Jakarta的插件的用户,请立刻更新Apache Struts 2.3.32或2.5.10.1版本。
分享: