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漏洞可以相提并
论了,网站运营者要加强安全审计,宁可累一点,也不要让这种漏洞攻击造成的损失
发生在自己的网站上。