freemarker语法_CVE20207799:FreeMarker模板FusionAuth RCE复现

本文详述了FusionAuth身份管理平台的一个安全漏洞,该漏洞允许具有修改email或theme模板权限的用户通过Apache FreeMarker engine执行任意命令。影响版本为FusionAuth <= 1.11.0。利用过程包括设置环境、复现漏洞以及展示如何通过修改email模板触发命令执行。修复方案是升级到1.11.0及以上版本。
摘要由CSDN通过智能技术生成
点击上方蓝色字体关注我们,一起学安全! 本文作者:? (团队复现组成员) 本文字数: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 进行测试)

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

    fe8df98739635a65b4c5ab6f80d55d15.png

  5. 打开网址http://127.0.0.1:9011/配置 FusionAuth

    1. 先配置数据库

      8fda30971672dd32ab3e340788b2d777.png

    2. 配置 Elastic Search

      0c678414f8d452fcf8708c43d995fb9c.png

    3. 创建好用户之后就可以登录了

      79aa8cdb1775aabc7bcf411ba3f1ce43.png7b9f8c2b36cb76219813438f1c0457c0.png

0x05 漏洞复现 本次使用 email template 进行测试
  1. 进入 setting -> email template

    4893c1bb4c4f5642a02ed6e3d6bf9ec2.png

  2. 随便点一个 template 的 edit

    7b78aff363d5af1281e88c99a2e6b14e.png

  3. 开启 Burp Suit 抓包, 配置好 proxy

    78a21c654dfd7bac94a4a22a7c7a8454.png

  4. 点击 Preview, 然后去 Burp Suit 看抓包

    19e3dbaf1c241bd499790db512d301f2.pngb0256421f4892aed55f17fe19c83ade8.png

  5. 修改

    emailTemplate.defaultHtmlTemplate

    ${"freemarker.template.utility.Execute"?new()("whoami")}

  6. forward 之后看结果

    5830956bab63f4e6f2e90a473f09c2ae.png

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 30726468d3d3c86e1a394b36c7f14dd1.png 266d0894225ab4b441dcf5ebbe17b559.png 阅读原文看更多复现文章Timeline Sec 团队安全路上,与你并肩前行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值