Struts2 S2-045 2.3版本漏洞利用及修复方案

       

        Apache Struts2是应用于创建网站,平台,Java环境的一个开放式源代码MVC框架
 
系统。在Struts2 2.3.5-2.3.31 Struts 2.5-Struts 2.5.10版本上发现漏洞,这个漏
 
洞是利用Struts2的上传功能代码里的非正常处理函数代码,没有正确的去处理访问客
 
户输入的错误内容。导致黑客可以通过输入那里发送恶意的POST数据包,利用这个漏
 
洞在windows 2003 2008 2012服务器跟Linux centos系统服务器上执行系统权限命令。 
 
 
 
黑客在上传文件的同时,通过POST提交HTTP请求头中的Content-Type值来利用这个漏洞,进而执行服务器的管理员权限命令。Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
 
 
1.基于Jakarta插件的文件上传功能
 
2.入侵攻击者伪造post 请求里的Content-Type的值
 
出问题的网站代码如下:
 
if  (LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null,  new Object[0]) == null) {
            return LocalizedTextUtil.findText(this.getClass(),  "struts.messages.error.uploading", defaultLocale, null, new  Object[] { e.getMessage() });
         } else {
            return  LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null,  args);
         }
 

 
在以下3个代码文件里都含有漏洞代码:
 
1.coresrcmainjavaorgapachestruts2dispatchermultipartMultiPartRequestWrapper.java
 
2.coresrcmainjavaorgapachestruts2dispatchermultipartJakartaMultiPartRequest.java
 
3.coresrcmainjavaorgapachestruts2dispatchermultipartJakartaStreamMultiPartRequest.java
 
 
漏洞利用代码如下:(python 利用方法)
 
 
 
Struts2 漏洞修复:
 
安全检查下网站web根目录下的 /WEB-INF/lib/,以及子目录下的struts-
 
core.x.x.jar ,如果存在这个文件,说明是有漏洞,这个版本在Struts2.3.5 到 
Struts2.3.31 以及 Struts2.5跟Struts2.5.10之间。
 
更新到Strusts2.3.32或者Strusts2.5.10.1最新版本,或使用第三方网站安全公司进
行安全加固以及安全防御。
 
临时的安全解决方案:删除/WEB-INF/lib/下的commons-fileupload-x.x.x.jar文件
 
(如果删除会造成网站的上传功能受到影响)Sine安全公司是一家专注于:服务器安

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

提供商。
 
SINE安全工程师认为这次的漏洞很严重 可以跟2013年的那个st2-016漏洞可以相提并
 
论了,网站运营者要加强安全审计,宁可累一点,也不要让这种漏洞攻击造成的损失
 
发生在自己的网站上。
分享: