转自https://www.cnblogs.com/wangtanzhi/p/12328083.html

SSTI模板注入:
之前也写过:
https://www.cnblogs.com/wangtanzhi/p/12238779.html

SSTI模板注入:

模板注入涉及的是服务端Web应用使用模板引擎渲染用户请求的过程
服务端把用户输入的内容渲染成模板就可能造成SSTI(Server-Side Template Injection)

模板引擎

模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。一些模板引擎:Smarty,Mako,Jinja2,Jade,Velocity,Freemaker和Twig

模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,这大大提升了开发效率,良好的设计也使得代码重用变得更加容易。与此同时,它也扩展了黑客的攻击面。除了常规的 XSS 外,注入到模板中的代码还有可能引发 RCE(远程代码执行)。通常来说,这类问题会在博客,CMS,wiki 中产生。虽然模板引擎会提供沙箱机制,攻击者依然有许多手段绕过它。

模板渲染

首先 模板渲染分解为前端渲染和后端渲染,还有浏览器渲染。

模板只是一种提供给程序来解析的一种语法,换句话说,模板是用于从数据(变量)到实际的视觉表现(HTML代码)这项工作的一种实现手段,而这种手段不论在前端还是后端都有应用。
通俗点理解:拿到数据,塞到模板里,然后让渲染引擎将赛进去的东西生成 html 的文本,返回给浏览器,这样做的好处展示数据快,大大提升效率。

服务端模版注入

服务器执行了我们传过去的数据。每当服务器用模板引擎解析用户的输入时,这类问题都有可能发生。除了常规的输入外,攻击者还可以通过 LFI(文件包含)触发它。模板注入和 SQL 注入的产生原因有几分相似——都是将未过滤的数据传给引擎解析。

这里模板注入前加“服务端”,这是为了和 jQuery,KnockoutJS 产生的客户端模板注入区别开来。通常的来讲,前者甚至可以让攻击者执行任意代码,而后者只能 XSS。

模板引擎注入

一些模板引擎:Smarty,Mako,Jinja2,Jade,Velocity,Freemaker和Twig,模板注入是一种注入攻击,可以产生一些特别有趣的影响。对于AngularJS的情况,这可能意味着XSS,并且在服务器端注入的情况下可能意味着远程代码执行。重点来了,不同引擎有不同的测试以及注入方式!

flask/jinja2模板注入

PHP/模版引擎Twig注入

tplmap

利用tplmap这个工具进行检测是否有模板注入漏洞,用法有点像sqlmap,都是基于python的。

0|10x01解题

提示ip自然想到XFF,试了一下真可控:

smarty模板注入payload:

X-Forwarded-For: {{system("ls")}}
X-Forwarded-For: {{system("cat /flag")}}

PS:模板语言都是

{%}分支判断

{{}}执行函数或变量

吗?

最新文章

  1. CA Loves GCD (BC#78 1002) (hdu 5656)
  2. BZOJ 3223 & 区间翻转
  3. python日志模块
  4. Android 非Activity类引用getResources()方法问题的解决方法
  5. Linux之Samba的配置
  6. 【锋利的JQuery-学习笔记】输入框提示语-隐藏/显示
  7. 使用CSS实现一个简单的幻灯片效果
  8. 从头开始编写一个Orchard网上商店模块(1) - 介绍
  9. 联想V480关闭UEFI安装Win7
  10. Swing Dance!摇摆舞!小组
  11. C++四种cast操作符
  12. 利用cocoapods创建基于git的私有库
  13. CF518D. Ilya and Escalator [概率DP]
  14. springboot后台控制重定向
  15. 【转】vmware的macos中apple ID一直登陆不上解决 ---(伪造smbios设备信息)
  16. grep,find
  17. 源码安装Nginx以及用systemctl管理
  18. SparkML之推荐引擎(一)---电影推荐
  19. Jquery实现轮播效果图
  20. OpenCV3 for python3 学习笔记2

热门文章

  1. layui form表单提交
  2. js给多级复杂动态变量赋值
  3. .NET必知的EventCounters性能指标监视器
  4. Effective Modern C++ ——条款2 条款3 理解auto型别推导与理解decltype
  5. kafka常见面试题
  6. 如何获取流式应用程序中checkpoint的最新offset
  7. web安全原理-文件包含漏洞
  8. Android呼吸灯添加
  9. FL Studio12如何进行图示编辑
  10. Jsoup获取网页内容(并且解决中文乱码问题)