Tomcat 爆出高危漏洞!
2020-04-05 16:06:41来源:博客园 阅读 ()
Tomcat 爆出高危漏洞!
一、漏洞背景
安全公告编号:CNTA-2020-0004
2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞。
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以下版本。
CNVD 对该漏洞的综合评级为“高危”。
二、影响版本
1、Apache Tomcat 9.x < 9.0.31
2、Apache Tomcat 8.x < 8.5.51
3、Apache Tomcat 7.x < 7.0.100
4、Apache Tomcat 6.x
三、漏洞分析
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
四、修复建议
Apache Tomcat 6 已经停止维护,请升级到最新受支持的 Tomcat 版本以免遭受漏洞影响,请更新到如下Tomcat 版本:
下载链接如下:
7.0.100版本:https://tomcat.apache.org/download-70.cgi
8.5.51版本:https://tomcat.apache.org/download-80.cgi
9.0.31版本 https://tomcat.apache.org/download-90.cgi
作者: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、后端、架构、阿里巴巴等大厂最新面试题
生活很美好,明天见~
原文链接:https://www.cnblogs.com/javastack/p/12636725.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- Idea实现SpringBoot外置Tomcat的Web项目热部署(包含静态文 2020-06-04
- 【报错】导入项目后报错:Target runtime Apache Tomcat v7. 2020-05-25
- 解决windows下tomcat端口被占用最简单暴力方法 2020-05-25
- Tomcat安装 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash