Apache Tomcat 反序列化代码执行漏洞复现(CVE-2020-9484)

1 前言

北京时间2020年05月20日,Apache官方发布了 Apache Tomcat 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-9484。

Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。当Tomcat使用了自带session同步功能时,使用不安全的配置(没有使用EncryptInterceptor)会存在反序列化漏洞,攻击者通过精心构造的数据包, 可以对使用了自带session同步功能的Tomcat服务器进行攻击。

2 漏洞分析

1、攻击者能够控制服务器上文件的内容和文件名称

2、服务器PersistenceManager配置中使用了FileStore

3、PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象

4、攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径

5、一般文件存储session的问题就是sessionID没有做过滤,允许跳出路径,让session文件变成攻击者控制的文件,导致漏洞产生,这次的session漏洞也不例外

3 漏洞版本

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

4 环境搭建

下载:git clone https://github.com/masahiro331/CVE-2020-9484.git
在这里插入图片描述
提示:前几次下载可能会失败,多试几次即可

开启环境

docker build -t tomcat:groovy .
docker run -d -p 8080:8080 tomcat:groovy
开启环境前提下需要docker环境
在这里插入图片描述
这里开启端口号为8080。
在这里插入图片描述
环境开启之后打开网站,网站是虚拟器的IP地址

在这里插入图片描述
查看环境可用容器
docker ps -a
在这里插入图片描述

curl ‘http://127.0.0.1:8080/index.jsp’ -H ‘Cookie: JSESSIONID=…/…/…/…/…/usr/local/tomcat/groovy’

在这里插入图片描述

运用容器
在这里插入图片描述
在这里插入图片描述

修复建议

升级到 Apache Tomcat 10.0.0-M5 及以上版本
升级到 Apache Tomcat 9.0.35 及以上版本
升级到 Apache Tomcat 8.5.55 及以上版本
升级到 Apache Tomcat 7.0.104 及以上版本

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐