CVE-2019-0232:Apache Tomcat RCE复现

0X00漏洞简介

该漏洞是由于Tomcat CGI将命令行参数传递给Windows程序的方式存在错误,使得CGIServlet被命令注入影响。

该漏洞只影响Windows平台,要求启用了CGIServlet和enableCmdLineArguments参数。但是CGIServlet和enableCmdLineArguments参数默认情况下都不启用。

漏洞影响范围:  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

0X01漏洞环境搭建

1.进行变量配置:

首先下载jdk文件安装,成功后开始变量配置。

以win7为例开始→我的电脑→右键属性→高级系统设置→环境变量→系统变量→新建

新建变量名为JAVA_HOME的变量变量值为你安装jdk的路径

例:变量名:JAVA_HOME变量值:C:\Program Files (x86)\Java\jdk1.8.0_73

新建变量名为JRE_HOME的变量变量值为你安装jdk文件夹中jre文件夹的路径

例:变量名JRE_HOME变量值: C:\Program Files (x86)\Java\jdk1.8.0_73\jre

新建变量名为CLASSPATH的变量变量值为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(ps:前面有个点)

在变量path新增变量值为;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(ps:前面有;)

配好变量后打开cmd命令框输入java –version出现java版本号等信息则说明变量安装成功。

2.将你的tomcat文件解压到你要安装的文件夹,进入文件夹中的bin文件夹,使用cmd命令执行startup.bat文件,出现加载界面,待加载完成后在浏览器访问http://localhost:8080界面访问成功则说明tomcat安装成功。

https://archive.apache.org/dist/tomcat/ 该链接为tomcat各个版本下载链接

3.修改配置文件

Tomcat的CGI_Servlet组件默认是关闭的,在 conf/web.xml 中找到注释的CGIServlet部分,去掉注释,并配置enableCmdLineArguments和executable(需要取消掉注释的一共是俩部分)

(ps:下方红框内的内容需要手打,原文件本来没有这个参数,9.0版本默认关闭)

接着修改conf/context.xml中的<Context>添加privileged="true"语句

然后在C:\Users\lenovo\Desktop\apache-tomcat-9.0.13\apache-tomcat-9.0.13

\webapps\ROOT\WEB-INF下创建一个cgi-bin文件夹,并在文件夹内创建一个bat文件可以什么都不写或者写一些bat语句。

到此所有的环境准备完成。

4.重启tomcat服务(确保配置生效)

5.利用payload为:

http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe

该payload为打开计算器

访问之后成功打开计算器

0X02漏洞原理

漏洞相关的代码在 tomcat\java\org\apache\catalina\servlets\CGIServlet.java 中,CGIServlet提供了一个cgi的调用接口,在启用 enableCmdLineArguments 参数时,会根据RFC 3875来从Url参数中生成命令行参数,并把参数传递至Java的 Runtime 执行。 这个漏洞是因为 Runtime.getRuntime().exec 在Windows中和Linux中底层实现不同导致的。

但是在tomcat9.0.13中已经严格限制了有效字符

0X03漏洞修复

因为在9.版本以上CGIServlet和enableCmdLineArguments参数默认情况下都不启用

所以影响不是很大。

开发者在URLDecoder.decode解码后增加一个正则表达式验证,毋庸置疑,目的肯定是检测url解码后的字符串输入的合法性。

因此最有效的修复方式是:

  1. 禁用enableCmdLineArguments参数。
  2. 在conf/web.xml中覆写采用更严格的参数合法性检验规则。
  3. 升级tomcat到9.0.17以上版本。

原文地址:https://www.cnblogs.com/L0ading/p/12312064.html

时间: 2024-10-11 19:56:45

CVE-2019-0232:Apache Tomcat RCE复现的相关文章

CVE-2014-0050: Exploit with Boundaries, Loops without Boundaries、Apache Commons FileUpload and Apache Tomcat DoS

catalog 1. Description 2. Analysis 3. POC 4. Solution 1. Description MultipartStream.java in Apache Commons FileUpload before 1.3.1, as used in Apache Tomcat, JBoss Web, and other products, allows remote attackers to cause a denial of service (infini

基于RedHat发行的Apache Tomcat本地提权漏洞

描述 Tomcat最近总想搞一些大新闻,一个月都没到,Tomcat又爆出漏洞.2016年10月11日,网上爆出Tomcat本地提权漏洞,漏洞编号为CVE-2016-5425.此次受到影响的主要是基于RedHat发行版Apache Tomcat,包括CentOS,RedHat,OracleLinux,Fedora等等.主要原因是普通Tomcat用户拥有权限来对/usr/lib/tmpfiles.d/tomcat.conf这个配置文件进行读写,那么该用户组成员或者拥有普通Tomcat权限的WebSh

(apache+tomcat集群+memcached番外篇)单台tomcat的session信息的2种持久化方式

为什么要实现搭建tomcat集群环境呢?主要因为单个tomcat无论从吞吐量和并发数上,会达到一定的极限.如果访问量超过单个tomcat的承受能力的话,tomcat一般要么拒绝提供服务,要么直接宕掉.所以,必须要依靠tomcat集群技术.举个最简单的例子,拿"送快件"比喻,如果一个人,5分钟送一件,一小时之内,送10个,一个人完全能胜任这项工作.假设现在到了双十一,要求1小时,送100个, 那怎么办?只能安排更多的人加入"送快件"这项工作中来.这其实和集群一个道理.

Tomcat 部署 The APR based Apache Tomcat Native ...

Tomcat启动时提示org.apache.catalina.core.AprLifecycleListener- ApacheTomcatJavaJNIIE 网上针对此问题提供的文章很多,但多数和我遇到的情况有出入,所以我将其记录于此 最近开发中需要使用Tomcat,随意找来个较新的版本6.0.20就用.发现启动时提示: "2010-5-12 18:06:06 org.apache.catalina.core.AprLifecycleListener init 信息: The APR base

Apache Tomcat样例目录session操纵漏洞

0x00   背景 前段时间扫到的漏洞,研究了下,感觉挺有意思的,发出来和大家分享下,有啥不对的地方还请各位拍砖指正. Apache Tomcat默认安装包含"/examples"目录,里面存着众多的样例,其中session样例(/examples/servlets/servlet/SessionExample)允许用户对session进行操纵.因为session是全局通用的,所以用户可以通过操纵session获取管理员权限. 案例:http://www.wooyun.org/bugs

在Windows XP下整合Apache+Tomcat+PHP

本篇文章主要是从安装JK插件方面来对整合Apache+Tomcat进行讲解. 以前在本机上做项目测试的时候,都是单独使用Tomcat,而没有像在服务器上一样用Apache+Tomcat这样的配置.但是整合Apache+Tomcat的好处人尽皆知.为什么我们不来试一试呢? 其实刚开始的时候并不是为了整合Apache和Tomcat而整合的,因为之前在我的PC机上根本就没 有装Apache,一个机缘--公司需要帮别人维护一个用PHP写的项目,于是为了测试PHP,所以我在PC机上装了个Apache,并安

apache+tomcat 搭建负载均衡系统

apache+tomcat+mod_jk 搭建负载均衡系统. 0.os系统采用centos6.8 x64 2.6.32-642.el6.x86_641.首先安装好jdk环境本次采用jdk-8u111-linux-x64.gz  jdk和jre的安装目录要不同,否则的话lib目录下没有dt.jar 和tools.jar  要配置好环境变量如下   vi /etc/profile   #add zwy 2017-08-29   export JAVA_HOME=/home/zhang/java/jd

Apache Tomcat信息泄露漏洞(CVE-2016-8745)

10.4.62.91   10.4.62.92   10.4.62.93   10.4.62.94 Apache Tomcat信息泄露漏洞(CVE-2016-8745):可通过HTTP获取远端WWW服务信息 发布时间:2016-12-12 重要程度:重要 受影响的版本: Apache Tomcat 9.0.0.m1到9.0.0.m13 Apache Tomcat 8.5.0到8.5.8 更早期版本不受影响 描述: 8.5.x 的 Connector 代码重构引入了一个在 NIO HTTP 连接器

Target runtime Apache Tomcat v6.0 is not defined. phyy Unknown Faceted Project Problem

Description Resource Path Location TypeTarget runtime Apache Tomcat v6.0 is not defined. phyy Unknown Faceted Project Problem 找到工程.settings目录 修改注释部分即可 <?xml version="1.0" encoding="UTF-8"?> <faceted-project> <!-- <run