CVE-2019-0232

CVE-2019-0232

Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)

漏洞环境搭建及其漏洞复现

CVE-2019-0232漏洞是由于Tmocat CGI将命令行参数传递给Windows程序的方式存在错误,使得CHIServler被命令注入影响。

该漏洞只影响Windows平台,要求启用了CGIServlet和enableCmdLineArguments参数。但是CGIServlet和enableCmdLineArguments参数默认情况下都不启用。

  漏洞影响范围:

   Apache Tomcat 9.0.0.M1 to 9.0.17

​ Apache Tomcat 8.5.0 to 8.5.39

   Apache Tomcat 7.0.0 to 7.0.93

漏洞复现

前言

触发该漏洞需要同时满足以下条件:

1.系统为Windows

2.启用了CGI Servlet(默认为关闭)

3.启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)

环境搭建

windows7的环境

image-20200404133916441

下载并安装jdk,我现在的jdk是jdk1.8

然后配置jdk的环境:

1
2
3
4
JAVA_HOME C:\Program Files\Java\jdk1.8.0_201
JRE_HOME C:\Program Files\Java\jdk1.8.0_201\jre
CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
path ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

image-20200404134220492

配置tomcat的环境,我选择的tomcat9.0.13 TOMCAT下载地址

记得要到每个版本的bin目录下下载对应windows版本的tomcat

image-20200404134452328

然后下载解压后,进入bin目录

image-20200404134551659

打开startup.bat

image-20200404134638601

启动成功

然后先关闭tomcat,配置漏洞环境

(1)进入conf/web.xml,修改CGI配置

387行

image-20200404134920285

439行,关闭注释

image-20200404135013434

(2)修改Content.xml

image-20200404135056177

添加privileged="true"

(3)创建一个cgi-bin目录在webapps/ROOT/WEB-INF

image-20200404135233074

(4)写入一个测试用的文件hello.bat

image-20200404135313981

(5)重启tomcat,写入payload

1
http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe

成功弹出计算器

image-20200404135313981

修复建议

  1. 禁用enableCmdLineArguments参数。
  2. 在conf/web.xml中覆写采用更严格的参数合法性检验规则。
  3. 升级tomcat到9.0.17以上版本。
Author: 我是小吴啦
Link: http://yoursite.com/2020/04/09/CVE-2019-0232/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.