关于Apache Tomcat存在文件包含漏洞

  2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020-1938)。攻击者利用该漏洞,可在未授权的情况下远程读取特定目录下的任意文件。目前,漏洞细节尚未公开,厂商已发布新版本完成漏洞修复。

Tomcat AJP Connector与AJP协议
  Tomcat Connector 是 Tomcat 与外部连接的通道,它使得 Catalina 能够接收来自外部的请求,传递给对应的 Web 应用程序处理,并返回请求的响应结果。

  默认情况下,Tomcat 配置了两个 Connector,它们分别是 HTTP Connector 和 AJP Connector:

// HTTP Connector:用于处理 HTTP 协议的请求(HTTP/1.1),默认监听地址为 0.0.0.0:8080// AJP Connector:用于处理 AJP 协议的请求(AJP/1.3),默认监听地址为 0.0.0.0:8009

  HTTP Connector 就是用来提供我们经常用到的 HTTP Web 服务。而 AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol),AJP 协议可以理解为 HTTP 协议的二进制性能优化版本,它能降低 HTTP 请求的处理成本,因此主要在需要集群、反向代理的场景被使用。

  AJP是Apache Tomcat web服务器用来与servlet容器通信的一个二进制协议。主要用于集群或逆向代理场景,其中web服务器与应用服务器或servelet容器进行通信。

  简单来说,就是HTTP Connector暴露给客户端了,AJP是webserver (如Apache HTTPD)和Apache Tomcat服务器之间内部使用的,如下图所示。AJP在Apache HTTP服务器中是以模块的形式实现的,表示为mod_jk或mod_proxy_ajp。AJP本身并不会暴露到外部。

  1. 漏洞情况分析
      Tomcat是Apache软件基金会Jakarta 项目中的一个核心项目,作为目前比较流行的Web应用服务器,深受Java爱好者的喜爱,并得到了部分软件开发商的认可。Tomcat服务器是一个免费的开放源代码的Web应用服务器,被普遍使用在轻量级Web应用服务的构架中。
      2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞。Tomcat AJP协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。
      CNVD对该漏洞的综合评级为“高危”。
  2. 漏洞影响范围
    受影响版本:
    Tomcat 6 (已不受维护)
    Tomcat 7 Version < 7.0.100
    Tomcat 8 Version < 8.5.51
    Tomcat 9 Version < 9.0.31
    本次漏洞与include的三个属性有关
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path

  任意文件读取问题出现在org.apache.catalina.servlets.DefaultServlet这个Servlet
  构造一个AJP请求,请求会走默认的DefaultServlet并交给DefaultServlet的doGet方法处理。
  doGet会调用ServeResource方法获取资源文件,调用getRelativePath方法获取要读取资源的相对路径,通过getResources方法就可以获取到了对应路径的Web资源对象。
  然后再通过控制ajp控制的上述三个include属性来读取文件,通过操控上述三个属性从而可以读取到/WEB-INF下面的所有敏感文件,不限于class、xml、jar等文件。
3. 处理建议
  目前,Apache官方已发布9.0.31、8.5.51及7.0.100版本对此漏洞进行修复,CNVD建议用户尽快升级新版本或采取临时缓解措施:
如未使用AJP协议
  如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。
  如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。
(注释掉AJP端口,或删除AJP端口的配置)
如果使用了AJP协议
  建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值);

<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>

  如无法立即进行版本更新、或者是更老版本的用户,建议为AJPConnector配置requiredSecret来设置AJP协议认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):

<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" />

  根据The AJP Connector中的介绍说明(注意address部分),如果没有指定IP地址的话,默认是绑定任意地址,这样就导致外网也可以访问这个端口。因此出于安全考虑,我们需要增加这个address的设置,并且绑定到127.0.0.1。

官方修复版本做了如下修复:

// 默认不开启AJP
// 默认只监听本地ip
// 强制设置认证secret
// 代码层面主要在AjpProcessor类的prepareRequest方法封装requst对象时采用了白名单,只添加已知属性。这样三个include属性不再被客户端控制,漏洞修复。

Tomcat AJP安全漏洞相关推荐

  1. [CNVD-2020-10487/CVE-2020-1938]: Tomcat AJP协议漏洞

    环境搭建 下载存在漏洞版本8.5.50: https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.5 ...

  2. Tomcat Ajp(CVE-2020-1938) 漏洞复现与修复

    前言 2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938).该漏洞是由于Tomcat AJP协议存 ...

  3. tomcat源码分析_CVE-2020-9484 tomcat session反序列化漏洞分析

    作者:N1gh5合天智汇 title: CVE-2020-9484 tomcat session反序列化漏洞分析 tags: CVE,Tomcat,反序列化 grammar_cjkRuby: true ...

  4. tomcat ajp协议安全限制绕过漏洞_国家信息安全漏洞共享平台发布Apache Tomcat漏洞安全公告...

    2月22日消息 国家信息安全漏洞共享平台(CNVD)近日发布了一份关于 Apache Tomcat 存在文件包含漏洞的安全公告,具体如下: 安全公告编号:CNTA-2020-0004 2020 年 1 ...

  5. tomcat ajp协议安全限制绕过漏洞_Apache Tomcat文件包含漏洞(CVE20201938)复现

    一.漏洞背景2020年02月20日,国家信息安全漏洞共享平台(CNVD)发布了关于Apache Tomcat文件包含漏洞(CVE-2020-1938/CNVD-2020-10487)的安全公告.Tom ...

  6. tomcat ajp协议安全限制绕过漏洞_Apache tomcat 文件包含漏洞复现(CVE20201938)

    漏洞背景 Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer ...

  7. CVE-2020-1938 Tomcat AJP漏洞复现

    0x00 简介 Tomcat在server.xml中配置有HTTP连接器和AJP连接器,AJP连接器可以通过AJP协议与另一个web容器进行交互.AJP协议是定向包协议,其使用端口为8009端口,为提 ...

  8. Java安全-Tomcat AJP 文件包含漏洞(CVE-2020-1938)幽灵猫漏洞复现

    Tomcat AJP 文件包含漏洞(CVE-2020-1938) CVE-2020-1938 又名GhostCat ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含 ...

  9. CVE-2020-1938 Tomcat AJP 漏洞记录

    漏洞描述 2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020- ...

最新文章

  1. 高阶奇异值分解(HOSVD)理解
  2. Java学习小程序(5)猜数字游戏
  3. java 顺序输出_java输出顺序
  4. 申请以及集成 Stripe 的 Alipay 支付方案
  5. 7月11日安全沙龙演讲主题漏洞与网站挂马
  6. Oracle 11g ora 15018,OracleASM错误之--ORA-15031、ORA-15014
  7. php网页电话外呼,一种基于web网页端的电话外呼方法与流程
  8. 如何从任何Mac或Windows PC为iOS打印启用AirPrint
  9. win7系统玩游戏提示“运行时出错!初始化DirectX运行库失败 ”的解决方法
  10. 参考文献格式、论文尾注
  11. 精美的wordpress企业主题模板
  12. U盘修复后文件丢失怎么办?U盘数据丢失怎么恢复
  13. 【JAVA】图形用户界面练习
  14. 系统服务器与手机关系,手机与云服务器交互
  15. POI Excel实现内容替换
  16. 数组的reduce的妙用之处
  17. 在天翼云服务器部署程序不能被外网访问的问题
  18. 内存寻址系列讲座-拨开云雾初见端倪
  19. LaTex 论文排版(4): 插入图片(Visio图转换成.eps图)
  20. Windows安装Scoop失败解决方法

热门文章

  1. 一个IT人士的个人经历,给迷失方向…
  2. php-imagick漏洞,PHP Imagick内存泄漏
  3. 『Java安全』Shiro1.2.4反序列化漏洞(Shiro-550|CVE-2016-4437)复现与浅析
  4. KBEngine调研报告
  5. python实现胶囊网络_胶囊网络(Capsule Network)在文本分类中的探索
  6. 标准化体系建设(下):如何建立基础架构标准化及服务化体系?
  7. 《麦肯锡方法》第4章 扩展客户-思维导图
  8. LS产电GMC交流接触器
  9. 酷酷的爆炸效果_Python海龟画图不仅仅是画图
  10. excel表格行列显示十字定位_excel如何设置点击任意一个单元格会出现一个十字架标明所点击单元格的横和列...