安全—07day

Tomcat AJP 文件包含漏洞(CVE-2020- 1938)

漏洞概述

Ghostcat(幽灵猫)是由长亭科技安全研究员发现的存在于Tomcat 中的安全漏洞,由于Tomcat AJP 协议设计上存在缺陷,攻击者通过Tomcat AJP Connector可以读取或包含 Tomcat上所有 webapp目录下的任意文件,例如可以读取webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

  • 漏洞编号:CVE:CVE-2020-1938 CNVD:CNVD-2020-10487
  • 漏洞影响:读取或包含Tomcat上所有webapp目录下的任意文件,此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
  • 影响程度:高危
  • 影响版本
    Apache Tomcat 6
    Apache Tomcat 7 < 7.0.100
    Apache Tomcat 8< 8.5.51
    Apache Tomcat 9 < 9.0.31

漏洞原理

Tomcat 配置了两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件以及可以包含任意文件,如果有某上传点,上传图片马等等,即可以获取shell。

漏洞复现

环境搭建
使用vulhub/tomcat/CVE-2020-1938

docker-compose build
docker-compose up -d

复现
安全—07day_第1张图片
这里可以看到tomcat的版本在漏洞影响范围内,可以扫描端口看是否开放了8009,使用了AJP服务
安全—07day_第2张图片
可以看到开放了8080和8009,以及它们的版本信息

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py -f WEB-INF/web.xml 192.168.232.3

安全—07day_第3张图片
可以看到成功读取了web.xml文件

漏洞修复

  • 如未使用 Tomcat AJP 协议:

如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51 或 7.0.100 版本进行漏洞修复。
如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭 AJPConnector,或将其监听地址改为仅监听本机 localhost。

具体操作:
(1)编辑 /conf/server.xml,找到如下行 ( 为 Tomcat 的工作目录)

<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />

(2)将此行注释掉(也可删掉该行)

<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->

(3)保存后需重新启动,规则方可生效。

  • 如果使用了 Tomcat AJP 协议:

建议将 Tomcat 立即升级到 9.0.31、8.5.51 或 7.0.100 版本进行修复,同时为 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"/>

如无法立即进行版本更新、或者是更老版本的用户,建议为 AJPConnector 配置 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" />

你可能感兴趣的:(安全,tomcat)