CVE-2019-0232-ApacheTomca远程执行代码漏洞复现
- 2019 年 10 月 6 日
- 筆記
0X1漏洞概述
2019年4月13号,Apache Tomcat 9.0.18版本公告中提到,本次更新修复了一个代号为CVE-2019-0232的漏洞。
该漏洞只对Windows平台有效,攻击者向CGI Servlet发送一个精心设计的请求,可在具有Apache Tomcat权限的系统上注入和执行任意操作系统命令。漏洞成因是当将参数从JRE传递到Windows环境时,由于CGI_Servlet中的输入验证错误而存在该漏洞。
0X2漏洞影响范围
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
0X3环境搭建
下载Apache Tomcat任意一漏洞版本,下载到本地,解压。
第一步,修改 conf/context.xml 的 <Context> 添加 privileged="true"属性,否则会没有权限。如下所示。

Tomcat的CGI_Servlet组件默认是关闭的,在 conf/web.xml 中找到注释的CGIServlet部分,去掉注释,并配置enableCmdLineArguments和executable,如下:

这里主要的设置是 enableCmdLineArguments 和 executable 两个选项。 enableCmdLineArguments 启用后才会将Url中的参数传递到命令行, executable 指定了执行的二进制文件,默认是 perl,需要置为空才会执行文件本身。编写attack.bat文件,内容如下。

在bin目录下打开startup.bat文件,启动服务。

浏览器访问8080端口,服务搭建成功

0X4漏洞攻击
访问attack.bat文件,查看ip地址信息。
http://127.0.0.1:8080/cgi-bin/hello.bat?c:/windows/system32/ipconfig

攻击成功!可实现任意命令执行。
0X5漏洞修复
- 使用更新版本的Apache Tomcat。这里需要注意的是,虽然在9.0.18就修复了这个漏洞,但这个更新是并没有通过候选版本的投票,所以虽然9.0.18没有在被影响的列表中,用户仍需要下载9.0.19的版本来获得没有该漏洞的版本。
- 关闭enableCmdLineArguments参数