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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。