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

枫少@KillBoy
枫少@KillBoy
管理员
215
文章
0
粉丝
Web安全1332,7345字数 950阅读3分10秒阅读模式
AI智能摘要
你是否知道,一个默认开启的端口可能正让你的服务器暴露在攻击者视野中?本文深度复现Apache Tomcat CVE-2020-1938(Ghostcat)高危漏洞,揭示攻击者如何通过AJP协议读取任意文件,甚至实现远程代码执行。涵盖完整环境搭建、POC验证、批量扫描与防护方案,帮你快速判断系统风险并加固防御。安全无小事,一次深入剖析带你掌握关键应对措施。
— AI 生成的文章内容摘要

一、漏洞介绍

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高危文件读取/包含漏洞复现-图片1

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

 

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

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

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

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

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

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

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

下载完成后解压缩

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

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

8.编辑path

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

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

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

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

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

11.扫描是否开放8009端口

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

(二)漏洞复现

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高危文件读取/包含漏洞复现-图片10

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高危文件读取/包含漏洞复现-图片11

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

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

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

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

四、防护方案

(一)截止目前,官方已经发布新版本(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高危文件读取/包含漏洞复现-图片14

 
枫少@KillBoy
  • ApacheTomcat
  • Ghostcat漏洞
  • it2021
  • it2021.com
  • tomcat
  • 代码执行
  • 安全设备
  • 漏洞复现
  • 漏洞扫描
  • 远程代码执行
评论  13  访客  13
    • 玄冰侠
      玄冰侠 0

      这漏洞有点可怕啊,默认配置就有问题

      • 鹿乃
        鹿乃 0

        8009端口默认开着太危险了,之前部署都没注意

        • 旧橱窗
          旧橱窗 0

          有人试过在linux环境复现吗?

          • 暴龙兽
            暴龙兽 0

            我们公司还在用8.5.31版本,得赶紧升级了

              • 花影重
                花影重 0

                @ 暴龙兽 你们版本确实在影响范围内,赶紧安排升级吧。

              • 漠言
                漠言 0

                配置secret那个方案可行吗?

                • Vibe Magnet
                  Vibe Magnet 0

                  前两天刚碰到这个问题,服务器被扫到了

                  • 草莓奶盖茶
                    草莓奶盖茶 0

                    图片里环境变量配置得挺清楚的

                    • 纸上云烟
                      纸上云烟 0

                      这个poc脚本在python3能用吗?

                      • 歪果仁侦探
                        歪果仁侦探 0

                        直接注释掉AJP连接器最省事

                        • Outlaw
                          Outlaw 0

                          感觉修复方案写得挺详细的

                            • 会唱歌的沙漠
                              会唱歌的沙漠 0

                              @ Outlaw 嗯,几种方法都列出来了,照着做就行。

                          匿名

                          发表评论

                          匿名网友

                          拖动滑块以完成验证