0X1漏洞概述
2019年4月13号,Apache Tomcat 9.0.18版本公告中提到,本次更新修复了一个代号为CVE-2019-0232的漏洞。
该漏洞只对Windows平台有效,攻击者向CGI Servlet发送一个精心设计的请求,可在具有Apache Tomcat权限的系统上注入和执行任意操作系统命令。漏洞成因是当将参数从JRE传递到Windows环境时,由于CGI_Servlet中的输入验证错误而存在该漏洞。
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
下载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端口,服务搭建成功
访问attack.bat文件,查看ip地址信息。
http://127.0.0.1:8080/cgi-bin/hello.bat?c:/windows/system32/ipconfig
攻击成功!可实现任意命令执行。