Apache Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器.默认情况下,Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互.但Apache Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意的AJP请求,可以读取或者包含Web应用根目录下的任意文件,如果配合文件上传任意格式文件,将可能导致任意代码执行(RCE).该漏洞利用AJP服务端口实现攻击,未开启AJP服务对外不受漏洞影响(tomcat默认将AJP服务开启并绑定至0.0.0.0/0)。
漏洞简介
严重程度:高危
CVE编号:CVE-2020-1938
影响版本:
Apache Tomcat = 6
7 <= Apache Tomcat < 7.0.100
8 <= Apache Tomcat < 8.5.51
9 <= Apache Tomcat < 9.0.31
漏洞成因
该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。
漏洞:
攻击者通过Ajp协议端口利用该漏洞进行文件读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。
若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。
漏洞防护
(1) Apache官方已发布9.0.31、8.5.51及7.0.100版本针对此漏洞进行修复,Apache Tomcat 6 已经停止维护,请升级到最新受支持的 Tomcat 版本以免遭受漏洞影响::
https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-90.cgi
(2) 使用AJP协议的临时处置方法:为AJP Connector配置secret来设置 AJP 协议的认证凭证,且注意口令强度
(3)未使用AJP协议的临时处置方法:禁用AJP协议端口,在conf/server.xml配置文件中注释,并重启Tomcat服务