tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现

By | 2019年1月8日

一、漏洞前言

2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险

二、漏洞名称 

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

三、危害等级:  

 高危 

四、漏洞描述: 

CVE-2017-12616:信息泄露漏洞 
当 Tomcat 中使用了 VirtualDirContext 时,攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码。 
CVE-2017-12615:远程代码执行漏洞 
当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。 
通过以上两个漏洞可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。 

五、漏洞利用条件和方式:  
CVE-2017-12615漏洞利用需要在Windows环境,且需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。

CVE-2017-12616漏洞需要在server.xml文件配置参数,经过实际测试,Tomcat 7.x版本内默认配置无VirtualDirContext参数,需要手工添加,默认配置条件下不受此漏洞影响。

六、漏洞影响范围:  

CVE-2017-12616影响范围:Apache Tomcat 7.0.0 – 7.0.80 
CVE-2017-12615影响范围: Apache Tomcat 7.0.0 – 7.0.7

七、漏洞复现

姿势一:python脚本的复现

CVE-2017-12615漏洞复现:

1.测试环境为tomcat7.0.70

2.需要手动配置web.xml,开启http的put方法:

添加如下配置:

<init-param>

            <param-name>readonly</param-name>

            <param-value>false</param-value>

        </init-param>

3.通过CVE-2017-12615.py即可上传shell:

4.远程即可访问shell:

注意:其利用脚本已上传到我的github中,https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-12615.py

姿势二:利用文件名后缀加::$DATA绕过上传

通过burpsuit抓包,上传拦截get改成PUT方法,然后上传:

姿势三:利用在上传文件名后缀名后加/可绕过上传

姿势四:通过在上传文件后缀名加上%20可绕过

姿势五:通过在上传文件名后缀加上.可绕过上传

八、漏洞修复建议

根据业务评估配置readonly和VirtualDirContext值为Ture或注释参数,临时规避安全风险;

官方已经发布Apache Tomcat 7.0.81 版本修复了两个漏洞,建议升级到最新版本。