ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

枫少@KillBoy Web安全评论31,0295字数 1840阅读6分8秒阅读模式

一、漏洞介绍

Tomcat AJP协议设计缺陷,攻击者可以通过Tomcat AJP Connector读取包含Tomcat上所有webapp目录下的任意文件,如果目标应用上有文件上传功能,则攻击还可以做到远程代码执行。

在影响版本范围内,如果开启AJP Connector,攻击者能够访问到该端口,则可被利用。

在默认配置下,Tomcat AJP Connect为开启状态,且监听在0.0.0.0:8009。

二、影响版本

Tomcat 9.X(低于9.0.31版本)

Tomcat 8.X(低于8.5.51版本)

Tomcat 7.X(低于7.0.100版本)

Tomcat 6 全版本

三、POC

(一)环境部署

靶机系统:Windows Server 2019 Datacenter

Tomcat版本:ApacheTomcat 9.0.17

1.在安装Tomcat之前,必须安装JDK SE8或更高版本(不同版本的Tomcat需要不同版本的JDK支持,以官方说明为主),本次POC使用的是JDK SE13版本。下载地址为:

https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

下载完成后压缩。

2.我的电脑-属性-高级系统设置-高级-环境变量。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

 

3.找到path进行编辑,新建如下。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

4.在命令行中,输入如下命令后有结果反馈,则代表部署完成。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

5.部署完JDK后,还需要部署eclipse环境。

6.部署eclipse后,下载Tomcat,下载地址为:

https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.17/

下载完成后解压缩

7.配置环境变量,我的电脑-属性-高级系统设置-高级-环境变量,新建如下变量。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

8.编辑path

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

9.运行目录下bin中的startup.bat即可。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

10.此外也可以利用docker直接部署环境。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

11.扫描是否开放8009端口

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

(二)漏洞复现

1.下载poc脚本到本地,获得如下脚本(以下脚本可以复制到外部使用)。

下载地址:https://github.com/nibiwodong/CNVD-2020-10487-Tomcat-ajp-POC

到本地。

2.cmd命令行中先切换到poc脚本所在目录下,用python2 加载poc脚本,该脚本可利用此漏洞读取敏感文件信息。

命令格式为:python ./脚本名 业务IP -p 8009 -f 文件名

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

3.至此POC结束。利用此漏洞可以读取到例如webapp 配置文件、源代码、数据库配置配置等敏感信息。

三、漏洞排查

(一)下载漏洞扫描脚本,并且解压缩,得到如下扫描脚本(该脚本可以复制到外部使用)。

下载地址:https://github.com/woaiqiukui/CVE-2020-1938TomcatAjpScanner

1.使用python3运行扫描脚本,运行命令为:

python 脚本名.py 字符串

注:字符串可以为指定IP地址,也可以为文件。如下图所示:

(1)扫描指定IP 192.168.1.111

python scan.py 192.168.1.111

(2)也可以生成txt文件,文件中写入要检测的IP地址,命令行的字符串写文件名。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

2.运行完成后,如下图所示,展示该IP是否存在漏洞。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

3.并且会将结果保存在同目录下的result.txt中。

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

四、防护方案

(一)截止目前,官方已经发布新版本(9.0.31、8.5.51、7.0.100版本)修复了该漏洞,6.X版本已经停止维护,无法更新。

(二)如果目前系统未用到Tomcat AJP协议,建议直接升级。如果无法升级版本,可以使用如下办法:

1.可以关闭AJP Connector,或者修改监听地址。修改方法如下:编辑<CATALINA_BASE>/conf/server.xml,将<!--<Connector port=”8009” protocol=”AJP/1.3” redirect-Port=”8443”>>将该行注释或者删除,重启Tomcat即可。

2.在安全设备上,做相关安全策略,限制外部IP访问Tomcat AJP Connector端口。

(三)如果目前系统到Tomcat AJP协议,除升级版本外同时为AJP Connector配置secret来设置AJP协议认证凭证。将YOUR_TOMCAT_AJP_SECRET更改为无法轻易猜解的值。

 

写在最后,欢迎大家关注Killboy安全实验室微信公众号,全都是干货啊

ApacheTomcat CVE-2020-1938 Ghostcat高危文件读取/包含漏洞复现

免责声明:本站某些文章、信息、图片、软件等来源于互联网,由本网整理发表,希望传递更多信息和学习之目的,并不意味赞同起观点或证实其内容的真实性以及非法用途。 如设计、版权等问题,请立即联系管理员,我们会给予更改或删除相关文章,保证您的权利。
高性能云服务器2折起
 
枫少@KillBoy
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: