Apache-Tomcat-Ajp漏洞测试与修复

说明

Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。此漏洞为文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。

受影响的版本

    Apache Tomcat = 6

    7 <= Apache Tomcat <7.0.100

    8 <= Apache Tomcat <8.5.51

    9 <= Apache Tomcat <9.0.31

演示测试

验证工具脚本:

下载AjPy验证工具,需安装python2环境,文件下载:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

使用python3需要修改CNVD-2020-10487-Tomcat-Ajp-lfi.py文件以下代码:

self.socket.makefile("rb", bufsize=0) -->change self.socket.makefile("rb", buffering=0)
print("".join([d.data for d in data])) -->print("".join([d.data.decode() for d in data]))

查看Apache Tomcat版本 <8.5.51
1、通过tomcat.py脚本查看linux tomcat版本,下载地址:https://github.com/0nise/CVE-2020-1938

python tomcat.py version 127.0.0.1

在这里插入图片描述
Apache Tomcat/8.5.12是存在存在该漏洞的版本,进行下一步测试证实

2、通过python脚本利用AJP BUG读取webapp任意目录下文件,以/WEB-INF/web.xml为例

 python ./CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1 -p 8009 -f WEB-INF/web.xml

成功读取web.xml文件,证实漏洞的存在
Apache-Tomcat-Ajp漏洞测试与修复_第1张图片
3、本地下载安全版本tomcat apache-tomcat-8.5.51,测试正常:
apache-tomcat-8.5.51

修复方案测试

临时禁用AJP协议端口,在conf/server.xm l配置文件中注释掉

1、注释测试版本8.5.12 tomcat AJP协议端口,重启测试:
Apache-Tomcat-Ajp漏洞测试与修复_第2张图片
通过脚本再次测试访问

 python ./CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1 -p 8009 -f WEB-INF/web.xml

Apache-Tomcat-Ajp漏洞测试与修复_第3张图片

2、配置ajp配置中的secretRequired跟secret属性来限制认证

修改conf/server.conf

Apache-Tomcat-Ajp漏洞测试与修复_第4张图片
再次输入命令无法访问

 python ./CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1 -p 8009 -f WEB-INF/web.xml

在这里插入图片描述

3、官方下载最新版下载地址:

https://tomcat.apache.org/download-70.cgi

https://tomcat.apache.org/download-80.cgi

https://tomcat.apache.org/download-90.cgi

https://github.com/apache/tomcat/releases

你可能感兴趣的:(Java)