- 什么是SSTI漏洞
- CVE-2019-9614漏洞复现
- ofcms的freemarker模板源码简要分析
壹 什么是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 不属于任何一种语言,沙盒绕过也不是,沙盒绕过只是由于模板引擎发现了很大的安全漏洞,然后模板引擎设计出来的一种防护机制,不允许使用没有定义或者声明的模块,这适用于所有的模板引擎。
这里贴一张图,展示了常见语言的常见模板框架ÿ