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以上版本。

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

  1. Apache Tomcat RCE(CVE-2017-12615 )漏洞案例分析

    首先搭建tomcat环境: 下载当前项目的版本的tomcat

  2. Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现

    Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现  一.     漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...

  3. idea 2019 1 spring boot 启动报错 An incompatible version [1.2.12] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]

    1.构建一个简单springboot工程,日志打印报错内容如下: 15:38:28.673 [main] DEBUG org.springframework.boot.devtools.setting ...

  4. Apache Tomcat examples directory vulnerabilities(Apache Tomcat样例目录session操纵漏洞)复现

    目录 Session操控漏洞 示例: Session操控漏洞 在Apache tomcat中,有一个默认的example示例目录,该example目录中存着众多的样例,其中/examples/serv ...

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

    catalog . Description . Analysis . POC . Solution 1. Description MultipartStream.java in Apache Comm ...

  6. Apache Tomcat远程命令执行漏洞(CVE-2017-12615) 漏洞利用到入侵检测

    本文作者:i春秋作家——Anythin9 1.漏洞简介 当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 fals ...

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

    描述 Tomcat最近总想搞一些大新闻,一个月都没到,Tomcat又爆出漏洞.2016年10月11日,网上爆出Tomcat本地提权漏洞,漏洞编号为CVE-2016-5425.此次受到影响的主要是基于R ...

  8. Apache Tomcat 文件包含漏洞(CVE-2020-1938)

    2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938).该漏洞是由于Tomcat AJP协议存在缺陷 ...

  9. Tomcat启动失败:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager

    项目开发中发现服务器上Tomcat启动失败 开始定位 第一步:打开tomcat日志catalina.log: 2017-07-25 17:02:43,799 [Catalina-startStop-1 ...

随机推荐

  1. 原生javascript实现仿QQ延时菜单

    一.实现原理 定时器和排他思想 二.代码 <!DOCTYPE html> <html> <head> <title></title> < ...

  2. python之嵌套函数调用

    #定义嵌套函数 def func1(): print('this is func1') def func2(): print('this is func2')#调用1func1()输出:this is ...

  3. 8.for循环及练习

    For循环:   虽然所有循环结构都可以用 while 或者 do...while 表示,但Java提供了另一种语句— —for循环,使一些循环结构变的更加简单. for 循环语句是支持迭代的一种通用 ...

  4. oa办公系统是什么?对企业有什么作用?

    OA办公系统是指利用计算机网络帮助企业实现办公自动化,用系统软件代替传统的手工工作帮助企业处理内部事务,例如文档共享.部门协作.报销.业务流程等等,最终目的帮助企业提高工作效率,实现利益最大化. 随着 ...

  5. windows下配置tomcat的虚拟路径编译器为IDEA

    在tomcat中配置好后发现运行项目还是无效 我们需要打开tomcat的配置,把下方的红色区域勾选上即可生效 具体原因如下 那是由于默认时IDEA的热部署机制,会在以下路径: [C:\Users\系统 ...

  6. [LOJ#3044][动态DP]「ZJOI2019」Minimax 搜索

    题目传送门 容易想到一种暴力 DP:先转化成对于每个 \(k\) 求出 \(\max_{i\in S}|i-w_i|\le k\) 的方案数,最后差分 然后问题转化成每个叶子的权值有个取值区间,注意这 ...

  7. .net core 连接数据库(通过数据库生成Modell)

    创建数据库 (扫盲贴还劳烦大神们勿喷,谢谢) 打开数据库 输入如下代码 创建数据库 CREATE DATABASE [Blogging]; GO USE [Blogging]; GO CREATE T ...

  8. CentOS 6.6 下源码编译安装MySQL 5.7.5

    版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...

  9. zookeeper3.4.6安装

    1.关闭防火墙 service iptables stop chkconfig iptables off 2.编辑hosts文件: vi /etc/hosts 192.168.99.6 JacK6 1 ...

  10. CSS学习笔记--Div+Css布局实战(入门)

    基本页面布局 本教程带着大家做一个简单的页面布局 最重效果如下: 1.第一部,先创建上下左右4个DIV <!DOCTYPE html> <html> <head lang ...