热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Tomcat漏洞怎么解决

本篇内容主要讲解“Tomcat漏洞怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Tomcat漏

本篇内容主要讲解“Tomcat漏洞怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Tomcat漏洞怎么解决”吧!

1.Tomcat漏洞介绍

使用 Apache Tomcat 软件了 Java Servlet,JavaServer 页,Java 表达式语言和 Java 的 WebSocket 技术的一个开源实现。Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket规范是在Java Community Process下开发的 。

阿粉相信大家现在用什么版本的多有,从7.0到目前最新的10.0的用什么版本的都有,但是现在,Tomcat出现了重大的漏洞。而此次的漏洞涉及到的版本也是挺多的。

影响的版本有:

  • 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

也就是说此次受影响的版本包括:Tomcat 6,Tomcat 7的7.0.100以下版本,Tomcat 8的8.5.51以下版本,Tomcat 9的9.0.31以下版本。而阿粉线上的版本确实8.5.24,也在漏洞范围之内。

2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020-1938)。攻击者利用该漏洞,可在未授权的情况下远程读取特定目录下的任意文件。而 CNVD 也将此次漏洞定义为高危漏洞。

2.漏洞情况分析

从 CNVD 接收到长亭公司报送的Apache Tomcat文件包含漏洞开始,就开始了一轮的检测,经检测,Tomcat AJP协议由于存在实现缺陷导致相关参数可控,不得不说,这次漏洞攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。

webapp 文件夹,相信大家是非常的熟悉,很多线上项目都是直接把自己本身的项目 War 包发布到 webapps 目录下,这样也就导致了大家的源码,如果有黑客把这个作为漏洞进行攻击的话,那么一定会获取到你们的项目源码,再通过一定的手段进行反编译,那么项目的内容将没有任何秘密可言了,想想多么可怕。

Tomcat漏洞怎么解决

而他是通过什么来获取的,据悉,该漏洞被追踪为CVE-2020-1938,位于Apache Tomcat软件的AJP协议中,允许未经身份验证的黑客远程访问服务器上部署的应用程序和源代码文件。

既然漏洞是位于 AJP 协议中,那么我们首先得了解一下什么是 AJP 协议。

AJP协议

AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器连接。这是百度百科,也就是官方的解释,那么在 Tomcat 中 AJP 协议又是在哪些地方上呢?

阿粉相信大家都改过 Tomcat 的端口号吧,比如8080 改成 8088,然后8009改成 8099 这种的,但是大家有没有仔细的去看 server.xml 文件里面的注释呢?

Tomcat漏洞怎么解决

上面的这幅图,很明显这是基于 HTTP 1.1 的 Connector 而这个 Connector 简单来说就是一个连接器,有了这个,Tomcat 才能成为一个 web 服务器,但还额外可处理Servlet和jsp。

那么在看下面这幅图,注意看注释呦!

Tomcat漏洞怎么解决

Define an AJP 1.3 Connector on port 8009 这一句话直译的意思就是在端口8009上定义AJP 1.3连接器,也就是说这端口是基于 AJP 协议的,但是很多人都知道 HTTP 协议,是因为 8080 端口的存在,而基于 AJP 协议的 AJP1.3 的 Connector ,它使用的是 AJP 协议,使用二进制格式来传输可读性文本的协议。

如果大家真的对 AJP 协议真的感兴趣的话,那么大家可以去 Tomcat 的官网上去看一下 【https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html】,这个官方文档里面写明了 AJP 协议的设计目标,概述,还有关于一些请求的内容等等。

3.有了漏洞我们应该怎么处理呢?

  1. 一个最简单的办法,更换 Tomcat 的版本,也就是说你没有使用 AJP 协议的 Tomcat 的话,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。

如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。

具体操作:

  • 编辑 tomcat目录下的/conf/server.xml,找到如下行:

直接把这一行注释掉就OK了,保存后需重新启动,规则方可生效。

  1. 如果使用了Tomcat AJP协议:建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):

如无法立即进行版本更新、或者是更老版本的用户,建议为 AJP Connector 配置 requiredSecret 来设置AJP协议认证凭证。

到此,相信大家对“Tomcat漏洞怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程笔记网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 标题: ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
author-avatar
没有那么一个人_382
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有