背景

Apache Tomcat是由Apache软件基金会下Jakarta项目开发的Servlet容器。在默认情况下,Apache Tomcat会开启AJP连接器,便于与其他Web服务器通过AJP协议进行数据传输。

由于Apache Tomcat AJP协议的缺陷,攻击者可以通过Tomcat AJP Connector读取含Apache Tomcat在内其下所有webapp目录下的任何文件,因此攻击者可以读取webapp配置文件或源代码。如果目标应用支持文件上传功能,攻击者可以向服务端上传含有恶意JSP脚本代码的文件,然后利用漏洞进行文件包含,从而达到远程代码执行获取服务器权限等攻击目的。在未对外网开启AJP服务的情况下,不受漏洞影响(Tomcat默认开启AJP服务并将其绑定至0.0.0.0),由于SAE应用实例部署在VPC网络内部,所以如应用实例的8009端口对外不可访问,则可以认为受AJP漏洞攻击的风险较低。

影响范围

  • SAE中使用WAR包方式进行应用部署的客户。
  • SAE中使用镜像方式部署的且Tomcat Server.xml配置文件中开启了Tomcat AJP Connector的客户。

解决方案

  • SAE中使用WAR包方式部署的客户,请通过Console或API方式重新部署应用即可。
  • SAE中使用镜像方式部署的客户,请使用注释掉Tomcat AJP Connector的Tomcat版本重新制作镜像并重新部署。

验证方法

通过WebShell登录容器,找到相应的tomcat conf目录,查看server.xml文件内是否存在<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 配置。

  • 如果不存在,表示该漏洞修补成功。
  • 如果存在,修补该漏洞。具体操作,请参见解决方案