前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2020-7799:FreeMarker模板FusionAuth RCE复现

CVE-2020-7799:FreeMarker模板FusionAuth RCE复现

作者头像
Timeline Sec
发布2020-07-02 14:33:20
1.3K0
发布2020-07-02 14:33:20
举报
文章被收录于专栏:Timeline SecTimeline Sec

本文字数:718

阅读时长:2~3min

声明:请勿用作违法用途,否则后果自负

0x01 简介

FusionAuth是一个免费的身份管理平台,安装简单,易于集成。FusionAuth提供登录、注册、MFA、SSO、电子邮件模板、本地化、密码控制、强哈希、网络挂钩、基于角色的访问控制等功能。

0x02 漏洞概述

一个有修改 email 或者 theme 模板权限的用户可以通过使用 Apache FreeMarker engine 里的 freemarker.template.utility.Execute 来执行任意命令。

因为使用了Apache FreeMarker engine(freemarker-2.3.28.jar), 所以可以使用 freemarker 的语法, 类似 ${XXX? Built-ins} 而 new 这个 Built-ins 会 创建一个特定 TemplateModel 的 变量。

要求?左边是TemplateModel,也就是 freemarker.template.utility.Execute, 而右边就是 initialize 这个 object 时的参数。

0x03 影响版本

FusionAuth <= 1.11.0

0x04 环境搭建

下载 FusionAuth 1.10.0(本次使用 FusionAuth 1.10.0 进行测试)

代码语言:javascript
复制
https://storage.googleapis.com/inversoft_products_j098230498/products/fusionauth/1.10.0/fusionauth-app-1.10.0.zip
  1. 将文件解压之后随便放一个位置
  2. 启动 MySQL /etc/init.d/mysql start
  3. 启动 ElasticSearch systemctl start elasticsearch.service
  4. 启动 FusionAuth bin/startup.sh
  1. 打开网址http://127.0.0.1:9011/配置 FusionAuth
    1. 先配置数据库
    1. 配置 Elastic Search
    1. 创建好用户之后就可以登录了

0x05 漏洞复现

本次使用 email template 进行测试

  1. 进入 setting -> email template
  1. 随便点一个 template 的 edit
  1. 开启 Burp Suit 抓包, 配置好 proxy
  1. 点击 Preview, 然后去 Burp Suit 看抓包
  1. 修改 emailTemplate.defaultHtmlTemplate${"freemarker.template.utility.Execute"?new()("whoami")}
  2. forward 之后看结果

0x06 修复方式

值得一提的是 freemarker 2.3.19 的 changelog 里显示,如果用户开启了 TemplateClassResolver.SAFER_RESOLVER 的话, 可以防止创建 freemarker.template.utility.Execute. 然而目前这并不是默认配置。

FusionAuth Version 1.11.0 的 release Note 里说是修改了 freemarker template engine, 使其不能执行恶意代码. 所以修复方式就是升级到1.11.0 及以后的版本。

参考链接:

https://www.anquanke.com/post/id/198036

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7799

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

本文分享自 Timeline Sec 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档