Tomcat Session 漏洞
漏洞描述
Apache Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器。攻击者可能可以构造恶意请求,造成反序列化代码执行漏洞。成功利用该漏洞需要同时满足下列四个条件:
- 攻击者能够控制服务器上文件的内容和名称;
- 服务器PersistenceManager配置中使用了FileStore;
- 服务器PersistenceManager配置中设置了sessionAttributeValueClassNameFilter为NULL,或者使用了其他较为宽松的过滤器,允许攻击者提供反序列化数据对象;
- 攻击者知道使用的FileStore存储位置到可控文件的相对文件路径。
整体利用条件较为苛刻,实际危害相对较低,为彻底防止漏洞潜在风险,阿里云应急响应中心提醒Apache Tomcat用户尽快采取安全措施阻止漏洞攻击。
影响版本
Apache Tomcat 10.x < 10.0.0-M5
Apache Tomcat 9.x < 9.0.35
Apache Tomcat 8.x < 8.5.55
Apache Tomcat 7.x < 7.0.104
安全版本
Apache Tomcat 10.x >= 10.0.0-M5
Apache Tomcat 9.x >= 9.0.35
Apache Tomcat 8.x >= 8.5.55
Apache Tomcat 7.x >= 7.0.104
安全建议
- 升级Apache Tomcat至安全版本
- 禁止使用Session持久化功能FileStore
操作步骤
这里以Linux下升级tomcat 10.0.0-M5为例,其他版本类似;
下载你要升级的Tomcat 10.0.0-M5版本:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.0-M5/bin/apache-tomcat-10.0.0-M5.tar.gz
备份旧的tomcat(这部分非必须,根据自己情况而定)
- 停止tomcat: ./shutdown.sh
- 备份旧的tomcat。先在该目录下创建一个文件并命名为:mkdir tomcat-backup
- 复制旧的 tomcat到刚刚创建的tomcat目录下:cp -Rf /home/tomcat-x/* /home/tomcat-backup/ (cp -Rf /原路径/* /目的路径/)
开始安装新版本
- 解压新的tomcat:tar -zxvf apache-tomcat-10.0.0-M5.tar.gz(在原tomcat目录解压)
- 删除原来的tomcat-x:rm -rf tomcat-x
- 重命名为:mv apache-tomcat-10.0.0-M5 tomcat (注意:此时tomcat就是新的了)
- 把旧的server.xml移动到新的server.xml。
先删除新的server.xml:rm -rf server.xml
移动:mv /home/tomcat-x/conf/server.xml - /home/tomcat/conf/ - 把旧的webapps移动到新的webapps下。
先删除新的webapps文件:rm -rf webapps
移动:mv /home/tomcat-x/webapps /home/tomcat
注意 修改了旧tomcat的某个文件,一定要复制或移动到新的服务器下,至此升级tomcat完成;
你可以去启动tomcat服务器:sh ./startup.sh (注意:由于tomcat服务器是由Java编写而成,所以运行服务器前,检查是否安装Java运行环境,建议使用java8+ 此处省略…)
关闭服务器命令:sh ./shutdown.sh
禁止使用Session持久化功能FileStore
取消Tomcat Session持久化功能
打开tomcat目录>conf>context.xml,这是所有web应用共享的配置信息。
找到下面的一段话
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
注释翻译过来就是“取消注释以禁用session持久化当tomcat重启的时候”,所以只要将注释取消,那么tomcat重启的时候就不会进行持久化了。如需要session共享可以使用 Spring Session+Redis实现Session共享;