其他分享
首页 > 其他分享> > ofcms模板注入漏洞

ofcms模板注入漏洞

作者:互联网

OFCMS 1.1.2后台存在Freemarker模板命令注入漏洞

 

漏洞描述

OFCMS 是Java 版CMS系统。功能:栏目模板自定义、内容模型自定义、多个站点管理、在线模板页面编辑等功能、代码完全开源、MIT授权协议。

OFCMS 1.1.3之前的版本使用Freemarker作为模板引擎,然而开发者未对网站后台的“模板文件”功能处的“所存储的模板数据”做好过滤,导致攻击者可以使用FreeMarker模板注入的方式获取WebShell。

 

漏洞存在的位置(代码级)

该漏洞出现的文件路径为:oufu-ofcms-V1.1.2\ofcms\ofcms-admin\src\main\java\com\ofsoft\cms\admin\controller\cms\TemplateController.java,通过在TemplateController类的save()方法设置断点可以发现,save()方法没有对存入模板的数据进行充足的过滤,攻击者可以将可执行系统命令的恶意代码存入Freemarker模板。

具体位置如下图所示。

   

而Freemarker在渲染页面时,会执行恶意代码。为了查看代码的执行流,首先发现该CMS的开发框架为JFinal,可以将重点集中在前端控制器类,于是在oufu-ofcms-V1.1.2\ofcms\ofcms-admin\src\main\java\com\ofsoft\cms\front\controller\IndexController.java的front()方法处设置断点,该方法用于依据index页面的模板文件渲染网页。如图所示。

 

通过调试可以发现,在渲染页面的时候,被攻击者嵌入的恶意代码会通过

com.jfinal.core.ActionHandler.java的第74行代码“render.setContext(request, response, action.getViewPath()).render();”执行,如图所示。

 

漏洞验证或利用工具及使用说明(PoC、EXP)

漏洞验证或利用工具为:火狐浏览器;

使用说明如下:

漏洞验证过程分为以下3步:

1)攻击者登录OFCMS的管理后台;

2)攻击者修改“模板文件”功能处的静态页面模板(如index.html),插入可执行系统命令的恶意代码;

3)攻击者访问步骤2所修改的静态页面。

 

具体如下:

1)攻击者登录OFCMS的管理后台

2)攻击者修改“模板文件”功能处的静态页面模板(如index.html),插入可执行系统

命令的恶意代码

插入的恶意代码可以为所欲为之猥琐欲为:

<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("calc") }

3)攻击者访问步骤2所修改的静态页面

攻击者访问网站首页,可以发现计算器被弹出了

 

标签:恶意代码,漏洞,ofcms,攻击者,模板,页面
来源: https://www.cnblogs.com/safe-hacker/p/16530913.html