作者:Hu3sky@360CERT

原文链接:https://www.anquanke.com/post/id/199448#h2-0

0x01 漏洞背景

2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞

Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。

CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。

0x02 影响版本

  • Apache Tomcat 9.x < 9.0.31

  • Apache Tomcat 8.x < 8.5.51

  • Apache Tomcat 7.x < 7.0.100

  • Apache Tomcat 6.x

0x03 漏洞分析

3.1 AJP Connector

Apache Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector表示接收请求并返回响应的端点。即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。在Apache Tomcat服务器中我们平时用的最多的8080端口,就是所谓的Http Connector,使用Http(HTTP/1.1)协议

在conf/server.xml文件里,他对应的配置为

 <Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />

而 AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本,它能降低 HTTP 请求的处理成本,因此主要在需要集群、反向代理的场景被使用。

Ajp协议对应的配置为

 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Tomcat服务器默认对外网开启该端口 Web客户访问Tomcat服务器的两种方式:

3.2 代码分析

漏洞产生的主要位置在处理Ajp请求内容的地方org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest()

这里首先判断SC_A_REQ_ATTRIBUTE,意思是如果使用的Ajp属性并不在上述的列表中,那么就进入这个条件

SC_A_REQ_REMOTE_PORT对应的是AJP_REMOTE_PORT,这里指的是对远程端口的转发,Ajp13并没有转发远程端口,但是接受转发的数据作为远程端口。

于是这里我们可以进行对Ajp设置特定的属性,封装为request对象的Attribute属性 比如以下三个属性可以被设置

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

3.3 任意文件读取

当请求被分发到org.apache.catalina.servlets.DefaultServlet#serveResource()方法

调用getRelativePath方法,需要获取到request_uri不为null,然后从request对象中获取并设置pathInfo属性值和servletPath属性值

接着往下看到getResource方法时,会把path作为参数传入,获取到文件的源码

漏洞演示:读取到/WEB-INF/web.xml文件

3.4 命令执行

当在处理 jsp 请求的uri时,会调用 org.apache.jasper.servlet.JspServlet#service()

最后会将pathinfo交给serviceJspFile处理,以jsp解析该文件,所以当我们可以控制服务器上的jsp文件的时候,比如存在jsp的文件上传,这时,就能够造成rce

漏洞演示:造成rce

0x04 修复建议

更新到如下Tomcat 版本

 Tomcat 分支 版本号

Tomcat 7

7.0.0100

Tomcat 8

8.5.51

Tomcat 9

9.0.31

Apache Tomcat 6 已经停止维护,请升级到最新受支持的 Tomcat 版本以免遭受漏洞影响。

请广大用户时刻关注 Apache Tomcat® – Welcome! 获取最新的 Tomcat Release版本,以及 apache/tomcat: Apache Tomcat 获取最新的 git 版本。

0x05 相关空间测绘数据

360安全大脑-Quake网络空间测绘系统通过对全网资产测绘,发现 Apache Tomcat 在国内存在大范围的使用情况。具体分布如下图所示。

0x06 产品侧解决方案

6.1 360城市级网络安全监测服务

360安全大脑的QUAKE资产测绘平台通过资产测绘技术手段,对该类 漏洞/事件 进行监测,请用户联系相关产品区域负责人获取对应产品。

6.2 360AISA全流量威胁分析系统

360AISA基于360海量安全大数据和实战经验训练的模型,进行全流量威胁检测,实现实时精准攻击告警,还原攻击链。目前产品具备该漏洞/攻击的实时检测能力。

0x07 时间线

2020-02-21 360-CERT 发布分析报告

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

Tomcat爆出高危漏洞相关推荐

  1. Tomcat 爆出高危漏洞及修复

    今天跟大家分享Tomcat 爆出高危漏洞及修复的知识. 1 Tomcat 爆出高危漏洞及修复 1.1 漏洞背景 2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) ...

  2. Tomcat 爆出高危漏洞!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 一.漏洞背景 安全公告编号:CNTA-2020-0004 2020 ...

  3. Tomcat 又爆出高危漏洞!Tomcat 8.5~10 中招…

    作者 | 栈长 来源 | Java技术栈 开源界最近很热闹啊,各个主流软件或框架漏洞频发,比如像 Struts2.FastJSON.Dubbo.Redis.Tomcat 等都存在各种各样的漏洞. 不要 ...

  4. nvidia旧版驱动_N卡用户注意:老版驱动存在5个高危漏洞,赶紧更新

    8月5日消息,NVIDIA发布安全公告称,在目前的Windows显卡驱动中发现了五个高危级别的安全漏洞,用户可通过升级至最新版的431.60版本显卡驱动来修复这些漏洞. 据NVIDIA公告显示,这些漏 ...

  5. Windows RDP远程代码执行高危漏洞加固指南

    漏洞信息 序号 漏洞类型 风险等级 漏洞主机( 操作系统及版本) 1 Windows RDP远程代码执行高危漏洞 高 Windows     2. 漏洞加固实施 漏洞1:Windows RDP远程代码 ...

  6. OpenSSL国密爆出8.1分高危漏洞CVE-2021-3711

    背景 OpenSSL是一个知名的开源安全套接字层密码库.全球成千上万的web服务器的网站加密技术使用OpenSSL. 网银.在线支付.电商网站.门户网站.电子邮件等互联网应用广泛使用OpenSSL实现 ...

  7. Apache Tomcat 文件包含漏洞(CVE-2020-1938)

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

  8. 小心!智能合约再爆高危漏洞,两大加密货币直接变废纸!

    小心!智能合约再爆高危漏洞,两大加密货币直接变废纸! 大家都还记得,前一段时间发生的BEC智能合约的安全漏洞问题.近日,智能合约安全问题再次上演,火币Pro发布公告,暂停EDU冲提币业务,随后EDU智 ...

  9. 安天移动安全:Janus高危漏洞深度分析

    一.背景介绍 近日,Android平台被爆出"核弹级"漏洞Janus(CVE-2017-13156),该漏洞允许攻击者任意修改Android应用中的代码,而不会影响其签名. 众所周 ...

最新文章

  1. 数据库---闭包习题
  2. 【浅谈数据结构】《数据结构》Data Structure
  3. 表的插入、更新、删除、合并操作_6_通过多表关联插入
  4. [PHP] 安装PHP报错“Primary script unknown”的解决方法
  5. TypeScript里的混合类型
  6. Permutations CodeForces - 736D (矩阵逆)
  7. hibernate配置详情2(Dept.hbm.xml)
  8. Objective-C浮点数转化整数(向上取整、向下取整)
  9. jitpack让使用第三方依赖库更简单
  10. 谁记录了mysql error log中的超长信息
  11. 读写分离无效的大坑(新使用数据库读写分离的同学可以参考)
  12. 输出halloword
  13. create-react-app+antd+react-css-modules配置
  14. android qq图片分享到朋友圈,微信分享 QQ分享直接展示视频或图片 分享图片 分享视频...
  15. 阿里云播放器,判断直播时的状态
  16. 转:FAMI上的满分游戏
  17. python身份证号码校验第十七位系数_python实现身份证校验位计算
  18. Word论文排版技能积累
  19. 2023年中职网络安全竞赛——数字取证调查(新版)attack解析(详细)
  20. [转]基于POI的功能区划分()

热门文章

  1. java 连等_java并发之LBQ和ABQ(1)
  2. shell中注释一段代码的方法
  3. (王道408考研操作系统)第四章文件管理-第一节5:文件存储空间管理
  4. poj2229 基础的动态规划算法 挑战程序设计竞赛
  5. CC攻击(N个免费代理形成的DDOS)
  6. C# 导入CSV文件,导出到CSV文件
  7. 《论文笔记》Collaborative Visual Inertial SLAM for Multiple Smart Phones
  8. C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改(上)
  9. Docker基础入门总结
  10. annotation的理解