Tomcat 爆出高危漏洞!

1、漏洞背景

安全公告编号:CNTA-2020-0004java

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

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

受影响的版本包括:Tomcat 6,Tomcat 7的7.0.100如下版本,Tomcat 8的8.5.51如下版本,Tomcat 9的9.0.31如下版本。apache

CNVD 对该漏洞的综合评级为“高危”。后端

2、影响版本

一、Apache Tomcat 9.x < 9.0.31
二、Apache Tomcat 8.x < 8.5.51
三、Apache Tomcat 7.x < 7.0.100
四、Apache Tomcat 6.xtomcat

3、漏洞分析

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()

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

SCAREQREMOTEPORT对应的是AJPREMOTEPORT,这里指的是对远程端口的转发,Ajp13并无转发远程端口,可是接受转发的数据做为远程端口。

因而这里咱们能够进行对Ajp设置特定的属性,封装为request对象的Attribute属性 好比如下三个属性能够被设置:

javax.servlet.include.request_uri  
  
javax.servlet.include.path_info  
  
javax.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

4、修复建议

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

下载连接以下:

7.0.100版本:https://tomcat.apache.org/dow...

8.5.51版本:https://tomcat.apache.org/dow...

9.0.31版本 https://tomcat.apache.org/dow...

做者:Hu3sky
www.anquanke.com/post/id/199448

推荐去个人博客阅读更多:

1.Java JVM、集合、多线程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架构、阿里巴巴等大厂最新面试题

生活很美好,明天见~

相关文章
相关标签/搜索