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的环境
下载并安装jdk,我现在的jdk是jdk1.8
然后配置jdk的环境:
1 | JAVA_HOME C:\Program Files\Java\jdk1.8.0_201 |
配置tomcat的环境,我选择的tomcat9.0.13 TOMCAT下载地址
记得要到每个版本的bin目录
下下载对应windows版本的tomcat
然后下载解压后,进入bin目录
打开startup.bat
启动成功
然后先关闭tomcat,配置漏洞环境
(1)进入conf/web.xml
,修改CGI配置
387行
439行,关闭注释
(2)修改Content.xml
添加privileged="true"
(3)创建一个cgi-bin
目录在webapps/ROOT/WEB-INF
下
(4)写入一个测试用的文件hello.bat
(5)重启tomcat,写入payload
1 | http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe |
成功弹出计算器
修复建议
- 禁用enableCmdLineArguments参数。
- 在conf/web.xml中覆写采用更严格的参数合法性检验规则。
- 升级tomcat到9.0.17以上版本。