前言
Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。此漏洞为文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。
去edusrc看了一眼,刷的有点眼晕,评分降低到了2rank高危洞,刷的好猛呀!这边呢,随手也测试了一下,暂时直接实战给大家看一下“文件读取”,可以直接读取到敏感信息文件,比如数据库配置信息文件,下面先贴张图稳稳军心。
编号
CNVD-2020-10487
CVE-2020-1938
影响
Apache Tomcat = 6
7 <= Apache Tomcat <7.0.100
8 <= Apache Tomcat <8.5.51
9 <= Apache Tomcat <9.0.31
复现过程
我这里是使用docker 拉取 tomcat-8.5.32 环境复现的
docker搜索tomcat镜像
docker search tomcat-8.5.32
拉取镜像
docker pull duonghuuphuc/tomcat-8.5.32
拉取完成后查看是否拉取成功
docker images
运行镜像并映射端口
docker run -d -p 8080:8080 -p 8090:8090 duonghuuphuc/tomcat-8.5.32
并查看是否运行成功
docker ps -a
成功后访问系统地址
nmap 一下试试
至此环境搭建成功
exp1
exp2
漏洞演示
修复方案
- 临时禁用AJP协议端口,在conf/server.xm l配置文件中注释掉<Connector port=”8009″ protocol=”AJP/1.3″redirectPort=”8443″ />
- 配置ajp配置中的secretRequired跟secret属性来限制认证
- 官方下载最新版下载地址:
其他防护措施
如果相关用户暂时无法进行版本升级,可根据自身情况采用下列防护措施。
一、若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):
<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″ />
(2)将此行注释掉(也可删掉该行):
<!–<Connectorport=”8009″ protocol=”AJP/1.3″redirectPort=”8443″ />–>
(3)保存后需重新启动Tomcat,规则方可生效。
二、若需使用Tomcat AJP协议,可根据使用版本配置协议属性设置认证凭证。
使用Tomcat 7和Tomcat 9的用户可为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″address=”YOUR_TOMCAT_IP_ADDRESS” secret=”YOUR_TOMCAT_AJP_SECRET”/>
使用Tomcat 8的用户可为AJP Connector配置requiredSecret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″address=”YOUR_TOMCAT_IP_ADDRESS”requiredSecret=”YOUR_TOMCAT_AJP_SECRET” />