从ofcms的模板注入漏洞(CVE-2019-9614)浅析SSTI漏洞(freemarker模板)

https://www.cnvd.org.cn/flaw/show/CNVD-2019-08488
思路:
1、pom.xml的时候发现存在模版引擎freemarker
http://t.zoukankan.com/Eleven-Liu-p-12747908.html
2、寻找修改模版的地方
TemplateController.java
3、添加执行Payload
<#assign ex=“freemarker.template.utility.Execute”?new()>${ ex(“calc”) }

壹   什么是SSTI漏洞

SSTI:Server Side Template Injection   服务器端模板注入漏洞

既然是注入漏洞,那么它所运用的核心思想就和XSSSQL注入差不多,都是运用不安全的用户输入,将正常的数据接收处进行恶意输入,导致服务器将用户输入数据当成代码并执行,从而完成一些危险的行为

我们针对SSTI来看,他的主要载体是web站点MVC架构之上,也就是从用户可控的服务器模板代码处进行注入

经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

MVC框架将用户输入通过V传给C,由控制器C进行甄别分发,看是传递给M或者是其他的C,最后将服务器返回的数据值传递给V,最后由服务器进行渲染最终返回给浏览器,呈现在用户面前;

我们这里通过控制恶意的数据传递给V,V传递到后面进行一系列的处理最终吧黑客想要的结果返回;

凡是使用模板的地方都可能会出现 SSTI 的问题,SSTI 不属于任何一种语言,沙盒绕过也不是,沙盒绕过只是由于模板引擎发现了很大的安全漏洞,然后模板引擎设计出来的一种防护机制,不允许使用没有定义或者声明的模块,这适用于所有的模板引擎。

这里贴一张图,展示了常见语言的常见模板框架,以及其基本语法格式:

口说无凭,下面我们来看看ofcms中存在的SSTI漏洞

 

 

 

贰   CVE-2019-9614漏洞复现

CVE官网链接:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9614

先登录进ofcms的后台admin管理界面;然后再模板文件中课编辑Freemarker的模板代码(这想想就....实在是不安全);随机挑选一个幸运页面,进行payload注入;

Payload:<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

然后从前台进入该页面(联系我们)

于是便完成了系统命令执行的操作:

 

 

 

 

叁   ofcms的freemarker模板源码简要分析

我们从项目的pom.xml文件中可以得知,该项目使用了Freemarker 2.3.21版本

该模板管理功能界面源码为 /ofcms-admin/src/main/java/com.ofcms.cms/admin/cms/TemplateController.java

从源码中可以看到该功能支持freemarker模板文件的热处理,编辑保存等功能

我们来看模板目录:

与其一一对应的是.../webapp/WEB-INF/page/default/下的html文件

但是我们在网页端进行实时模板更改的时候,后台网页文件并不会有变化,这里应该是作者在freemarker框架上二次开发了一个热处理功能从而可以进行模板编辑;作者还是很牛逼的,ofcms整个系统架构逻辑严密,分工明确,功能也十分得强大,就是在某些小地方的疏忽倒是存在不安全的因素(其实大部分的不安全因素都可以通过部署waf来缓解,从而进行治标不治本的操作)

 

 

 

肆   小结

SSTI漏洞的应用常见十分的多元化,甚至可以在XFF头部注入中进行利用;大多数的语言开发框架都会使用模板进行快速开发,以减少开发周期,开发时间提高开发效率;但是安全和方便是两个水火不容的东西,要想安全便只能舍弃快捷,反之亦然;

网上大多数的SSTI漏洞描述都是基于php的PHPthink框架进行的,这里贴几个java的freemarker开发框架SSTI的POC:

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

<#assign value="freemarker.template.utility.ObjectConstructor"?new()>${value("java.lang.ProcessBuilder","calc.exe").start()}

<#assign value="freemarker.template.utility.JythonRuntime"?new()><@value>import os;os.system("calc.exe")</@value>

<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}                  //本漏洞POC

 

 

参考博客:

http://lanbainan.cn/2020/05/20/2020-05-20/

https://www.cnblogs.com/bmjoker/p/13508538.html

https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Goby反制复现

0x00 前言 最近复现Goby反制的时候遇到很多坑&#xff0c;记录一下反制过程以及遇到的坑点&#xff0c;还有世界上最强的黑客mux1ng帮我解决了很多问题。 0x01环境 攻击机&#xff1a; windows10 Goby1.8.230 172.20.10.3反制机&#xff1a; Windows7 Phpstudy2016 172.20.…

fckeditor漏洞_三十,文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御

一.编辑器漏洞 1.编辑器 编辑器属于第三方软件&#xff0c;它的作用是方便网站管理员上传或编辑网站上的内容&#xff0c;类似我们电脑上的Word文档。 编辑器通常分为两种情况&#xff1a; (1) 不需要后台验证&#xff0c;可以直接在前台访问且操作。通过方法找到编辑器&#x…

畅捷通T+任意文件上传(CNVD-2022-60632 )漏洞复现

一、漏洞描述 2022年8月29日和8月30日&#xff0c;畅捷通公司紧急发布安全补丁修复了畅捷通T软件任意文件上传漏洞。未经身份认证的攻击者利用该漏洞&#xff0c;通过绕过系统鉴权&#xff0c;在特定配置环境下实现任意文件的上传&#xff0c;从而执行任意代码&#xff0c;获得…

不喜欢节流吗?

您别无选择–基础系统&#xff08;此处的JVM将为您完成此选择&#xff09;。 我仍然记得2013年夏天&#xff0c;当时我正在运行一个项目&#xff0c;整个应用程序中只有1个URL使服务器瘫痪。 问题很简单-机器人决定以很高的速率索引我们的网站&#xff0c;并且该机器人正在创建…

OData V4 系列 查询操作

OData 学习目录 对OData的操作&#xff0c;主要是查询&#xff0c;下面把相关的查询情况列出来&#xff0c;供参考学习&#xff0c;每个操作都有对应的截图&#xff0c;便于理解 默认查询 $expand 查询导航属性关系 &#xff0c;查询Product相关的Supplier $top、$skip、$orde…

JSP项目打开不通的查看详情页动画是放大状态的解决办法

背景:前段时间做了一个详情页在当前页面的放大缩小的动画效果,——>我是如何用Jquery实现网页缩小放大的 今天测试反馈:详情页是缩小状态,点击关闭后打开其他的查看详情页页面,还是默认的缩小状态,需要做成,每次打开默认是放大的效果。 截图: 这个系统比较老,boots…

gorm 密码字段隐藏_KeeWeb for mac(密码管理工具)

KeeWeb是一个非常专业的密码管理工具。这款工具支持Mac OS X&#xff0c;Windows和Linux平台&#xff0c;不需要任何安装和工作在所有现代浏览器&#xff0c;搜索任何条目或查看所有文件中的所有项目作为一个列表。功能非常强大实用。本站现在提供KeeWeb Mac版下载&#xff0c;…

Centos7下按装Docker和docker-compose及环境配置

删除之前安装的 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engineyum remove docker-ce docker-ce-selinux container-selin…

你也在你的应用上添加B站上的弹幕效果

背景:现在弹幕已成为各大视频网站的标配,其实,弹幕最早是诞生于日本的一个二次元网站Niconico。后来A站和B站将其引入,开启了国内弹幕文化的先河。 开源地址:https://github.com/zerosoul/rc-bullets 相比点赞、转发、评论,弹幕的形式让用户的互动性更强,因此也更受大家…

google earth pro 64位_七彩虹秀精准刀工!iGame RTX 3060 Ti Advanced OC评测:烤机3小时64度...

一、前言&#xff1a;精准控制散热 七彩虹展现神奇刀法这次没有让大家等太久&#xff0c;在RTX 3080上市仅仅2个月之后&#xff0c;RTX 3060 Ti也终于来到了大家面前。这也是安培构架第一款售价在3000元以下的甜点产品。七彩虹公司也同步发售了5款iGame RTX 3060 Ti系列显卡&am…

流性能

当我阅读Angelika Langer的Java性能教程时-Java 8流有多快&#xff1f; 我简直不敢相信&#xff0c;对于一个特定的操作&#xff0c;它们花费的时间比循环要长15倍。 流媒体性能真的会那么糟糕吗&#xff1f; 我必须找出答案&#xff01; 巧合的是&#xff0c;我最近观看了一个…

Redis-cluster集群【第一篇】:redis安装及redis数据类型

Redis介绍&#xff1a; 一、介绍redis 是一个开源的、使用C语言编写的、支持网络交互的、可以基于内存也可以持久化的Key-Value数据库。redis的源码非常简单&#xff0c;只要有时间看看谭浩强的C语言&#xff0c;在去看redis的源码能看懂50-60%。redis目前最大的集群应该是新浪…

ad10怎么挖铺的铜_黄金怎么验真假,简单易行方法多。

在当今社会&#xff0c;随着人们生活水平的提高&#xff0c;大家越来越追求生活的质量。也就形成了我们在生活中想通过各种细节丰富我们的生活&#xff0c;提升我们的生活情趣。导致我们对物质的追求也上了一个台阶&#xff0c;相比之下黄金市场的需求也大大增加。而我们大家的…

CMD启动mysql服务“发生系统错误 5”的解决办法

背景&#xff1a;cmd进入&#xff0c;启动mysql报&#xff1a;发生系统错误 5 问题&#xff1a; 解决办法&#xff1a; 找到cmd.exe的位置&#xff0c;不好找请使用以下命令。 找到文件&#xff0c;右键以管理员身份运行即可。

roads 构筑极致用户体验_坚持用户思维 推动领克汽车逆势突围

【2020年7月9日&#xff0c;杭州】近日&#xff0c;全球新高端品牌—领克公布了2020年6月销量数据。领克汽车6月实现月销量达13214辆&#xff0c;环比增长约2%&#xff0c;同比增长约53%&#xff0c;连续三个月获得双增长&#xff0c;并创下过去七个月以来最高月销量表现。2020…

微信小程序【WXSS 文件编译错误】unexpected “?“at pos 1的解决办法。

问题&#xff1a; 解决办法&#xff1a; 在控制台输入 openVendor() &#xff0c;清除里面的 wcsc wcsc.exe 然后重启工具。 如果涉及编码格式乱码的&#xff0c;请手动改为uft-8. 问题&#xff1a; 解决办法&#xff1a;

常见的一些威胁情报分析平台

在进行渗透过程中&#xff0c;也可以借助一些商用或者非商业平台来进行信息搜索及验证&#xff0c;主要针对邮箱、IP、域名、文件md5、apk文件等进行搜索&#xff0c;整理和完善线索信息。为了大家方便&#xff0c; 对目前公开的威胁情报平台进行搜集&#xff0c;在实际使用过…

CSDN博客专家申请的条件及规则

“博客专家”是CSDN给予质量较高、影响力较大的IT类博客的荣誉称号,代表了CSDN官方对其博客的肯定,同时博客专家也需要承担一定的社区责任。 申请规则:http://blog.csdn.net/experts/rule.html 申请地址:https://blog.csdn.net/experts/apply 申请条件: 注意事项: 专属福…

CVE-2022-22965:Spring Framework远程代码执行漏洞

CVE-2022-22965&#xff1a;Spring Framework远程代码执行漏洞 本文仅为验证漏洞&#xff0c;在本地环境测试验证&#xff0c;无其它目的 漏洞编号&#xff1a; CVE-2022-22965 漏洞说明&#xff1a; Spring framework 是Spring 里面的一个基础开源框架&#xff0c;其目的是…

CSS系列讲解-总目录

总目录: 欢迎来到孙叫兽的《CSS系列讲解》,蓝色字体为传送门,点击进入即可。本专栏已完结,大前端专栏支持更新。 玩转CSS系列: 什么是CSS?你真的理解? CSS页面DEMO CSS基本语法? 如何玩转CSS的Id 和 Class选择器? 怎么玩转CSS内部样式表与外部样式表? 怎么样才…