Time: 2020-02-28  360灵腾安全实验室

CVE-2020-1938:Apache Tomcat服务器任意文件读取/包含漏洞通告

  近日检测到CNVD发布了CNVD-2020-10487漏洞通告,360灵腾安全实验室判断漏洞等级为严重,利用难度中,威胁程度高,影响面大。建议使用用户及时安装最新补丁,以免遭受黑客攻击。

  0x00 漏洞概述

  Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全局管理和Tomcat阀等。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。

  攻击者通过Ajp协议端口利用该漏洞进行文件读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。

  0x01 漏洞详情

  查看 Github 上 tomcat commit 历史记录可以看到有许多对AJP协议的代码提交

等级保护资讯网

  在其中一条commit中,发现了AJP白名单的添加

等级保护资讯网

  对代码块进行分析,发现java/org/apache/coyote/ajp/AbstractAjpProcessor.java中的 prepareRequest() 函数的功能是对 AJP 协议进行解析

  通过对该函数的调试,可以发现在处理 Constants.SC_A_REQ_ATTRIBUTE 这部分内容时,代码中未进行内容校验,盲目的将请求的内容进行复制

  因此,我们可以修改AJP请求的属性,进行能够控制任意 request.setAttribute 的key和value,通过控制request对象中这三个属性的值实现文件读取

  javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path

  利用效果:

  0x02 影响版本

  Tomcat 6.*

  Tomcat 7.* < 7.0.100

  Tomcat 8.* < 8.5.51

  Tomcat 9.* < 9.0.31

  0x03 漏洞检测

  相关用户可通过版本检测的方法判断当前应用是否存在漏洞风险:

  在web管理页面左上方可查看当前所使用的Tomcat版本

等级保护资讯网

  若当前版本在受影响范围内,则可能存在安全风险。

  0x04 处置建议

  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服务

  

等级保护资讯网

18933931888

工作时间:法定工作日,9:00~18:00

广州万方计算机科技有限公司 ©版权所有 2019-2020 粤ICP备08124637号

本站文章内容部分来源于网络转载,版权归作者所有。文章内容仅代表作者独立观点,不代表本站立场,转载目的在于传递更多信息。如有侵权,请联系删除。