Apache Tomcat 信息泄露漏洞预警及远程代码执行漏洞复现

一、漏洞描述:

2017年9月19日,Apache Tomcat官方 修复了2个严重级别的漏洞, 分别为: 信息泄露漏洞(CVE-2017-12616)、远程代码执行漏洞(CVE-2017-12615)

1.1CVE-2017-12616:信息泄露漏洞 

当 Tomcat 中使用了 VirtualDirContext 时,攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码。

1.2远程代码执行漏洞(CVE-2017-12615

如果Apache Tomcat服务器上启用了HTTP PUT请求方法(将web.xml中 readonly 初始化参数由默认值设置为 false),则可能存在远程代码执行漏洞。攻击者可以通过该漏洞上传jsp文件。

二、影响范围:

2.1信息泄露漏洞(CVE-2017-12616)影响范围:

Apache Tomcat 7.0.0 – 7.0.80

2.2远程代码执行漏洞(CVE-2017-12615)影响范围:

Apache Tomcat 5.x – 9.x

三、漏洞复现:

3.1 Apache Tomcat/7.0.79

1

修改/conf/web.xml

2

Readonly的含义:当设置为false时,PUT、DELETE方法生效

3

发送PUT请求包

思路可参考https://msdn.microsoft.com/en-us/library/dn393272.aspx

4

5

成功创建jsp文件

6

3.2  Apache Tomcat/7.0.81

7

上传失败

8

由于tomcat 对jsp做了一定处理。那么就考虑是否可以使其处理过程中对文件名的识别存在差异性,前面的流程中 topsec.jsp/ 识别为非jsp文件,而后续保存文件的时候,文件名不接受/字符,故而忽略掉。

修改文件名格式后再次提交请求:

9

3.3  Apache Tomcat/8.5.20   Linux

经过测试此方法在Linux上同样成功

11

12

13

四、修复方法:

注释掉web.xml的readonly配置,或者设置readonly=true

五、参考文档

http://tomcat.apache.org/security-7.html#Fixed_in_Apache_Tomcat_7.0.81

https://msdn.microsoft.com/en-us/library/dn393272.aspx

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12615

Written by