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漏洞修复

  1. 使用更新版本的Apache Tomcat。这里需要注意的是,虽然在9.0.18就修复了这个漏洞,但这个更新是并没有通过候选版本的投票,所以虽然9.0.18没有在被影响的列表中,用户仍需要下载9.0.19的版本来获得没有该漏洞的版本。
  2. 关闭enableCmdLineArguments参数