由于Apache Tomcat默认开启AJP连接器,攻击者可以通过Tomcat AJP Connector读取含Apache Tomcat在内其下所有webapp目录下的任何文件,存在恶意攻击风险。这里对该安全漏洞进行说明并提供解决方案。
背景
Apache Tomcat是由Apache 软件基金会下Jakarta 项目开发的Servlet容器。在默认情况下,Apache Tomcat会开启AJP连接器,便于与其他Web服务器通过AJP协议进行数据传输。
由于Apache Tomcat AJP协议的缺陷,攻击者可以通过Tomcat AJP Connector读取含Apache Tomcat在内其下所有webapp目录下的任何文件,因此攻击者可以读取webapp配置文件或源代码。如果目标应用支持文件上传功能,攻击者可以向服务端上传含有恶意JSP脚本代码的文件,然后利用漏洞进行文件包含,从而达到远程代码执行获取服务器权限等攻击目的。攻击者通过漏洞利用AJP服务端口实现攻击,在未对外网开启AJP服务的情况下,不受漏洞影响(Tomcat默认开启AJP服务并将其绑定至0.0.0.0)。
影响范围
- ECS 集群应用和 JAR 包部署方式的应用不受此AJP漏洞影响。
- 在EDAS K8s集群中使用WAR包方式进行应用部署的客户需要进行漏洞修复工作。
- 在EDAS K8s集群中使用镜像方式部署,且Tomcat Server.xml配置文件中开启了Tomcat AJP Connector的客户,需要进行漏洞修复工作。
解决方案
- 在EDAS K8s集群中使用WAR包方式部署的客户,请通过Console/API方式重新部署应用即可。
- 在EDAS K8s集群中使用镜像方式部署的客户,请使用注释掉Tomcat AJP Connector的Tomcat版本重新制作镜像并重新部署。
验证方法
通过WebShell登录容器,找到相应的tomcat conf目录,查看server.xml文件内是否存在<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
配置。
- 如果不存在,表示该漏洞修补成功。
- 如果存在,修补该漏洞,具体请参见解决方案。
问题反馈
如果您在使用上述功能过程中有任何疑问或问题,或在升级过程中出现任何问题。请加入钉群(钉群号:31723701)联系产品技术专家咨询处理。