1.综述
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
2017年9月19日,Apache Tomcat官方确认并修复了两个漏洞,信息泄露漏洞(CVE-2017-12616)和远程代码执行漏洞(CVE-2017-12615)。攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制获取用户服务器上 JSP 文件的源代码;或是攻击者通过精心构造的攻击请求,上传恶意的JSP文件,JSP文件中的恶意代码将能被服务器执行,造成远程代码执行。
2.漏洞概述
漏洞类型: 信息泄漏和远程代码执行漏洞
危险等级: 高危
利用条件: Tomcat在受影响版本内,并且readonly 参数设置为 false
受影响系统: Tomcat 7.x、8.x、9.x
3.漏洞编号
CVE-2017-12615 Tomcat远程代码执行漏洞
CVE-2017-12616 Tomcat信息泄露漏洞
4.漏洞描述
2017年9月19日,Apache Tomcat官方确认并修复了两个漏洞,信息泄露漏洞(CVE-2017-12616)和远程代码执行漏洞(CVE-2017-12615)。
信息泄露漏洞(CVE-2017-12616),当 Tomcat 中使用了 VirtualDirContext 时,攻击者能够通过发送恶意请求,绕过设置的相关安全限制,或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码,造成信息泄露。Tomcat 7.x版本内默认配置无VirtualDirContext参数,需要手工添加,默认配置条件下不受此漏洞影响。
远程代码执行漏洞(CVE-2017-12615),如果Apache Tomcat服务器上启用了HTTP PUT请求方法,并且在web.xml配置文件中 readonly参数设置为 false,攻击者通过精心构造的攻击请求,上传恶意的JSP文件,JSP文件中的恶意代码将能被服务器执行,从而造成远程代码执行。Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,并且readonly参数默认为true,默认配置条件下不受此漏洞影响。
5.漏洞利用
使用PUT上传JSP文件,如图1所示。
6.修复建议
Apache Tomcat官方暂未出相关安全补丁,建议使用临时解决方案。
临时解决方案:
1.注释掉web.xml的readonly配置,或者设置readonly=true。
2.前端的代理(nginx、Apache、IIS等)禁用put
IIS:IIS默认拒绝PUT和DELETE请求,如果使用了不安全的方法,建议禁用webDAV模块。
Apache:仅允许GET和POST方法,修改配置文件,修改后重启服务。
Nginx:虚拟主机的server段里加入下面代码,重启nginx。
参考链接:
http://mail-archives.apache.org/mod_mbox/www-announce/201709.mbox/%3C81e3acd3-f335-ff0d-ae89-bf44bb66fca0@apache.org%3E