Apache Tomcat 中允许替换 JSP 代码和获取 Web 应用程序文件的漏洞

中国公司长亭科技的研究人员已经确定 漏洞 (CVE-2020-1938)在 Apache Tomcat,Java Servlet、JavaServer Pages、Java 表达式语言和 Java WebSocket 技术的开源实现。 该漏洞的代号为 Ghostcat 和严重级别 (9.8 CVSS)。 在默认配置中,该问题允许通过向网络端口 8009 发送请求,从 Web 应用程序目录中读取任何文件的内容,包括具有设置和应用程序源代码的文件。

该漏洞还可以将其他文件导入到应用程序代码中,如果应用程序允许将文件上传到服务器,则允许在服务器上组织代码执行(例如,攻击者可以在通过图片上传表单获取图片)。 可以通过使用 AJP 处理程序向网络端口发送请求来进行攻击。 根据初步数据,网上 成立 超过 1.2 万台主机通过 AJP 协议接受请求。

该漏洞存在于AJP协议中,并且 没有叫 实施错误。 除了通过 HTTP(端口 8080)接受连接外,Apache Tomcat 默认允许通过 AJP 协议(Apache JServ 协议,端口 8009),它是一个性能优化的二进制等效 HTTP,通常在创建 Tomcat 服务器集群或加速与反向代理或负载平衡器上的 Tomcat 通信时使用。

AJP提供了访问服务器上文件的标准功能,可以使用,包括获取不被泄露的文件。 AJP 应该只能由受信任的服务器访问,但实际上 Tomcat 的默认配置是在所有网络接口上运行处理程序并在没有身份验证的情况下接受请求。 可以访问任何 Web 应用程序文件,包括 WEB-INF、META-INF 的内容,以及通过 ServletContext.getResourceAsStream() 调用提供的任何其他目录。 AJP 还允许您将 Web 应用程序的可访问目录中的任何文件用作 JSP 脚本。

这个问题从13年前Tomcat 6.x的分支发布开始就出现了。 除了直接Tomcat问题 影响 以及使用它的产品,例如 Red Hat JBoss Web Server (JWS)、JBoss Enterprise Application Platform (EAP),以及使用 春季靴. 类似漏洞 (CVE-2020-1745) 现在 在网络服务器中 暗潮在 Wildfly 应用服务器中使用。 在 JBoss 和 Wildfly 中,AJP 协议仅在 standalone-full-ha.xml、standalone-ha.xml 和 domain.xml 中的 ha/full-ha 配置文件中默认启用。 在 Spring Boot 中,默认情况下禁用 AJP 支持。 不同的小组已经准备了十多个漏洞利用的工作示例(
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Tomcat 版本中修复的漏洞 9.0.31, 8.5.51 и 7.0.100 (维护分支 6.x 已停产). 您可以在这些页面上关注发行版中更新的外观: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD的. 作为解决方法,如果不需要,您可以禁用 Tomcat AJP 连接器服务(将侦听套接字绑定到本地主机或注释掉连接器端口 =“8009”的行),或者 设置 如果服务用于与基于 mod_jk 和 mod_proxy_ajp 的其他服务器和代理交互(mod_cluster 不支持身份验证),则使用“secret”和“address”属性进行身份验证访问。

来源: opennet.ru

添加评论