Apache Tomcat文件包含漏洞复现(CVE-2020-1938)

    技术2026-01-21  7

    漏洞简介

    漏洞编号:

    CVE-2020-1938

    漏洞详情:

    Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。而该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者可通过构造特定参数读取webapp目录下的任意文件。

    漏洞影响范围:

    Apache Tomcat = 6 Apache Tomcat 7 < 7.0.100 Apache Tomcat 8 < 8.5.51 Apache Tomcat 9 < 9.0.31

    漏洞复现

    环境搭建:

    安装docker
    1. curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo 2. yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm 3. yum install docker-ce 4. systemctl start docker
    更换镜像的下载源
    vi /etc/docker/daemon.json

    直接替换里面的内容为: { “registry-mirrors”: [“https://xxxxx.mirrors.aliyun.com”] } 网址在阿里云容器镜像服务获取: https://www.aliyun.com/product/acr?spm=a2c4g.11174283.2.1.625e4541j1IFor

    重启docker服务:

    systemctl daemon-reload systemctl restart docker

    测试docker服务是否正常:

    docker pull busybox docker run busybox echo “hello world”

    输出hello world即docker正常运行。

    部署漏洞所需环境:

    复现漏洞可以直接使用vulhub上的docker镜像 项目可以下载至任意目录下,我这里在root目录下

    git clone https://github.com/vulhub/vulhub

    进入项目需要复现的漏洞编号下

    cd vulhub/vulhub-master/tomcat/CVE-2020-1938

    把我们需要的项目起来

    docker-compose up -d

    此命令需要python环境,还需要再单独下载

    yum install -y python38 可能yum源里没有python38,也可以装其他版本,可以执行get-pip.py文件即可 wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py pip -version pip install docker-compose

    环境搭建完成,测试docker运行情况,查看映射端口:

    docker ps

    web服务端口为8080,8009为AJP服务端口,打开浏览器输入虚拟机+8080出现下图则说明环境搭建成功。

    漏洞验证:

    这里提供两个exp地址(我用的第二个):

    https://github.com/0nise/CVE-2020-1938 https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

    靶机添加测试文件: 攻击机尝试利用exp读取该文件:

    python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.0.105 -p 8009 -f WEB-INF/test.txt

    测试读取成功,还可以读取目录下其他文件,这里不再演示至此漏洞复现成功。

    漏洞修复意见:

    1.关闭AJP默认开启端口(这里是8009) 2.升级tomcat,新版本已经修复漏洞。

    加油!

    Processed: 0.029, SQL: 12