引子:最近tomcat被曝出安全漏洞,全版本都要升级到最新,从网上看来了方法,直接记录一下,保存成shell脚本,给需要的朋友们使用。
本篇文章主要讲解Tomcat的版本检测与升级方法
1、漏洞概述
2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。目前,厂商已发布新版本完成漏洞修复。
Tomcat是Apache软件基金会中的一个重要项目,性能稳定且免费,是目前较为流行的Web应用服务器。由于Tomcat应用范围较广,因此本次漏洞影响范围较大。
2、影响范围
受影响版本
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
不受影响版本
- Apache Tomcat = 7.0.100
- Apache Tomcat = 8.5.51
- Apache Tomcat = 9.0.31
3、漏洞检测
3.1 Windows
通常在Apache Tomcat官网下载的安装包名称中会包含有当前Tomcat的版本号,用户可通过查看解压后的文件夹名称来确定当前的版本。
如果解压后的Tomcat目录名称被修改过,或者通过Windows Service Installer方式安装,可使用软件自带的version模块来获取当前的版本。进入Tomcat安装目录的bin目录,输入命令version.bat后,可查看当前的软件版本号。
3.2 Linux
首先执行ps -ef|grep tomcat
查看tomcat启动路径及信息,如果没有修改过名称的,则显示的文件夹名称就是tomcat版本号。如果修改过名称,则进入tomcat的bin目录下,执行./version.sh
查看版本号
3.3 SpringBoot项目
问:众所周知,springboot项目集成了tomcat,那么要怎么查看tomcat版本呢?
答:在启动项目时,通过查看启动日志,就可以快速辨别tomcat版本。
4. 漏洞处置建议
4.1 CentOS下
- 下载tomcat最新版本的二进制文件包,有需要的小伙伴们直接去tomcat官网下载即可,这是下载链接:tomcat-9.0.31版本tar包
- 找到tomcat目录,上传刚刚下载的最新版的tomcat二进制文件,也可以直接
wget
下载 - 执行
touch change-tomcat.sh
,创建一个shell文件 - 复制如下内容进入脚本,然后
sh change-tomcat.sh
执行脚本
sh apache-tomcat-8.5.31/bin/shutdown.sh
mkdir tomcat8.5.1-old
cp -Rf apache-tomcat-8.5.31/* tomcat8.5.1-old/
tar -zxvf apache-tomcat-9.0.31.tar.gz
rm -rf apache-tomcat-9.0.31/conf/server.xml
mv tomcat8.5.1-old/conf/server.xml apache-tomcat-9.0.31/conf/
rm -rf apache-tomcat-9.0.31/webapps
mv tomcat8.5.1-old/webapps apache-tomcat-9.0.31/
rm -rf apache-tomcat-9.0.31/bin/catalina.sh
mv tomcat8.5.1-old/bin/catalina.sh apache-tomcat-9.0.31/bin/
rm -rf apache-tomcat-9.0.31/webapps/examples
sh apache-tomcat-9.0.31/bin/startup.sh
ps -ef|grep jar
- 如果觉得麻烦,也可以直接下载我上传在csdn上的文件,不过脚本内容可能需要根据你当前的tomcat版本进行相应改动哦~
下载地址:change-tomcat.sh
4.2 Spring Boot
直接在pom文件中添加如下内容,重新部署即可。 不要直接升级spring boot,否则会有依赖不兼容问题。
<tomcat.version>8.5.51(可选择自己需要的tomcat版本号)</tomcat.version>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
4.3 官方升级
目前官方已在最新版本中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:
版本号 | 下载地址 |
Apache Tomcat 7.0.100 | |
Apache Tomcat 8.5.51 | |
Apache Tomcat 9.0.31 |
4.4 其他防护措施
- 如未使用Tomcat AJP协议:
如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。
如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑<CATALINA_BASE>/conf/server.xml
,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
(2)将此行注释掉(也可删掉该行):<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
(3)保存后需重新启动,规则方可生效。