目录
引言
软件开发完成并交付给客户,过了一段时间,客户的上级部门要求对服务器进行安全检测,通过漏洞扫描,对服务器的漏洞情况进行通报,要求限期完成漏洞修补。客户一般没有技术能力,就找到软件开发公司,帮助其解决服务器的安全问题。我们做为软件开发人员,也会帮忙解决一些服务器安全方面的问题。
1 安全评估报告服务器漏洞的说明
首先看一下安全评估报告,报告中对服务器的漏洞,漏洞概况是一个所有漏洞的列表,这里仅选取tomcat漏洞。
1.1 tomcat漏洞概况
端口 | 协议 | 服务 | 漏洞 |
---|---|---|---|
2201 | TCP | www | Apache Tomcat 信息泄露漏洞(CVE-2020-17527) Apache Tomcat 输入验证错误漏洞(CVE-2023-46589) Apache Tomcat 环境问题漏洞(CVE-2022-42252) Apache Tomcat 拒绝服务漏洞(CVE-2023-24998) Apache Tomcat 安全漏洞(CVE-2021-25122) HTTP/2拒绝服务漏洞(CVE-2023-44487) Apache Tomcat 安全漏洞(CVE-2021-25329) Apache Tomcat 拒绝服务漏洞(CVE-2021-41079) Apache Tomcat 权限许可和访问控制问题漏洞(CVE-2022-23181) Apache Tomcat 代码问题漏洞(CVE-2022-29885) Apache Tomcat 代码问题漏洞(CVE-2022-25762) Alibaba Druid 未授权访问【原理扫描】 Apache Tomcat 信息泄露漏洞(CVE-2021-24122) Apache Tomcat 环境问题漏洞(CVE-2021-33037) Apache Tomcat 访问控制错误漏洞(CVE-2021-30640) Apache Tomcat 跨站脚本漏洞(CVE-2022-34305) Apache Tomcat文件包含漏洞(CVE-2023-28708) Apache Tomcat 输入验证错误漏洞(CVE-2023-41080) Apache Tomcat 安全漏洞(CVE-2023-42795) Apache Tomcat 输入验证错误漏洞(CVE-2023-45648) Apache Tomcat 安全漏洞(CVE-2024-23672) Apache Tomcat信息泄露漏洞(CVE-2024-21733) Apache Tomcat 输入验证错误漏洞(CVE-2024-24549) Apache Tomcat 竞争条件问题漏洞(CVE-2021-43980) |
1.2 部分tomcat漏洞详情
然后针对每个漏洞的说明,如下是一个tomcat严重漏洞的详细信息
漏洞名称 | Apache Tomcat 输入验证错误漏洞(CVE-2023-46589) |
---|---|
详细描述 | Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat存在输入验证错误漏洞,该漏洞源于存在不正确的输入验证漏洞,可能会导致将单个请求视为多个请求,从而在反向代理后面出现请求走私。 |
解决办法 | 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://lists.apache.org/thread/0rqq6ktozqc42ro8hhxdmmdjm1k1tpxr |
威胁分值 | 7.5 |
危险插件 | 否 |
发现日期 | 2023-11-28 |
CVE编号 | CVE-2023-46589 |
CNNVD编号 | CNNVD-202311-2168 |
CNCVE编号 | CNCVE-202346589 |
漏洞名称 | Apache Tomcat 环境问题漏洞(CVE-2022-42252) |
---|---|
详细描述 | Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat 存在环境问题漏洞,该漏洞源于当 rejectIllegalHeader 设置为 false 时,Tomcat 可能存在请求走私问题(Request Smuggling)。 |
解决办法 | 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,详情请关注厂商主页: https://tomcat.apache.org/security-8.html https://tomcat.apache.org/security-9.html https://tomcat.apache.org/security-10.html |
威胁分值 | 7.5 |
危险插件 | 否 |
发现日期 | 2022-10-31 |
CVE编号 | CVE-2022-42252 |
CNNVD编号 | CNNVD-202210-2602 |
CNCVE编号 | CNCVE-202242252 |
漏洞名称 | Apache Tomcat 拒绝服务漏洞(CVE-2023-24998) |
---|---|
详细描述 | Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat使用Apache Commons FileUpload的打包重命名副本来提供Jakarta Servlet规范中定义的文件上传功能。因此,Apache Tomcat也容易受到Apache Commons FileUpload漏洞CVE-2023-24998的攻击,因为处理的请求部分数量没有限制。这导致攻击者有可能通过恶意上传或一系列上传触发DoS。 |
解决办法 | 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://tomcat.apache.org/security-9.html |
威胁分值 | 7.5 |
危险插件 | 否 |
发现日期 | 2023-02-20 |
CVE编号 | CVE-2023-24998 |
CNNVD编号 | CNNVD-202302-1610 |
CNCVE编号 | CNCVE-202324998 |
CNVD编号 | CNVD-2023-23552 |
漏洞名称 | Apache Tomcat 安全漏洞(CVE-2021-25122) |
---|---|
详细描述 | 当响应新的h2c连接请求时,Apache Tomcat可以将请求标头和数量有限的请求主体从一个请求复制到另一个请求,这将导致用户A和用户B都可以看到用户A的请求结果。 |
解决办法 | 厂商补丁: Apache Tomcat ----------- 厂商已发布了漏洞修复程序,请及时关注更新: https://tomcat.apache.org/security-10.html |
威胁分值 | 7.5 |
危险插件 | 否 |
发现日期 | 2021-03-02 |
CVE编号 | CVE-2021-25122 |
CNNVD编号 | CNNVD-202103-008 |
CNCVE编号 | CNCVE-202125122 |
CVSS评分 | 5 |
下面是报告中tomcat的版本信息
软件名称 | 版本号 |
---|---|
Tomcat | 8.5.58 |
2 针对漏洞的分析
通过查看漏洞详细信息,可以看到tomcat厂商已经发布升级补丁,能够修复漏洞。几乎所有的tomcat漏洞详细信息中,都有类似的解决办法描述。也就是通过升级tomcat就可以解决问题。
解决办法中,都有补丁的链接,因为是针对特定补丁的链接,如果我们对每个漏洞都挨个打补丁,工作量会非常大,我们分析,tomcat软件碰到漏洞后,他们就会发布补丁,同时在他们的新版本中肯定会解决这个问题,随着版本的升高,漏洞就会越来越少。
所以,我们采取的策略就是将tomcat升级到最新版本,这里的最新版本指的是小版本的最新版本,比如报告中tomcat版本是8.5.58,我们查阅tomcat官网,选取8.5这个版本的最新版本,我们查阅tomcat官网,tomcat8.5.100是8.5的最新版本,我们最终采用8.5.100做为升级的版本,这个版本能够解决已知的所有tomcat漏洞。
3 Tomcat 升级步骤
升级 Tomcat 的过程中,需要下载新版本、停止旧版本、替换相关文件夹并重新启动。以下是详细的步骤和具体的 shell 命令:
步骤 1:下载最新的 Tomcat 版本
首先,从 Apache Tomcat 的官方网站下载最新的 Tomcat 版本。例如,下载 tomcat-8.5.100
。
wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz
步骤 2:解压 Tomcat 文件
将下载的 tar.gz 文件解压到所需的目录中。
tar -xzvf apache-tomcat-8.5.100.tar.gz -C /path/to/desired/location
步骤 3:停止旧版本的 Tomcat
进入旧版本 Tomcat 的 bin
目录并执行停止命令。
cd /path/tomcat-8.5.58/bin
./shutdown.sh
步骤 4:备份旧的 Tomcat 配置(可选)
为了安全起见,可以备份旧版本的 conf
文件夹,以防升级过程中出现问题。
cp -r /path/tomcat-8.5.58/conf /path/backup/location
步骤 5:替换文件夹
将新版本 Tomcat 的 bin
和 lib
文件夹替换旧版本的相应文件夹。
cp -r /path/apache-tomcat-8.5.100/bin /path/tomcat-8.5.58/
cp -r /path/apache-tomcat-8.5.100/lib /path/tomcat-8.5.58/
步骤 6:启动新版本的 Tomcat
进入新版本 Tomcat 的 bin
目录并执行启动命令。
cd /path/tomcat-8.5.58/bin
./startup.sh
步骤 7:查看 Tomcat 版本
启动 Tomcat 后,检查 Tomcat 的版本以确保升级成功。
curl http://localhost:8080
或者,查看日志文件以确认版本信息。
tail -n 100 /path/tomcat-8.5.58/logs/catalina.out | grep "Server version"
步骤 8:完成 Tomcat 升级
如果上述步骤都顺利完成,并且确认新版本 Tomcat 已经成功启动,则表示 Tomcat 升级完成。
总结
为了修补 Tomcat 的漏洞,可以通过升级到最新的小版本来解决。升级过程相对简单,只需要将新版本的 bin
和 lib
文件夹替换旧版本中的相应文件夹即可。这种方法能够确保系统快速、安全地应用最新的安全补丁,提升 Tomcat 的整体稳定性和安全性。具体步骤包括下载最新的小版本 Tomcat,解压后替换旧版本的 bin
和 lib
文件夹,最后重启 Tomcat 服务即可完成升级。