知识简介 : 模版引擎和框架的区别
ssti的中文翻译 : 服务端的模版的注入
模版引擎 :前端的用于装饰优化html的模版 最简单的就是在腾讯会议中的聊天功能
框架 : 这个是一套独立存在的逻辑 如TP他是一个区别于php语法的后端逻辑(框架的作用就是 优化后端的功能和安全性)
两者的共性就是为了省时
怎么发现对方的web套用了模版引擎
主要是看页面的规律性和是不是非常的板正,大部分的web都是套用的模版 手写的工程量是非常大的
漏洞的原理
这个就类似于 框架的rce 模版引擎会有独特的语法,如果对方的模版引擎中有写入的这个功能,那就会导致恶意的模版引擎的语法的写入,再者没有对其进行过滤从而导致了,ssti注入
漏洞利用的逻辑思路
1、找寻是什么模版引擎
这个是模版对应的语法,所以我们的思路就是先找对方是什么语言写的 web 然后在语言中进行全扫即可,如对方使用的是php 那就是把php类的所以语法进行写到注入点进行测试
ssti的漏洞的场景就是需要在有输入的地方,并且这个输入之后会有输出的回显,这样就能进行操作
案例一:
靶场要求是让我们使用模版的rce删除morale.txt
我们随便点击一个商品
发现回显的地方 这个英文的意思是商品缺货 然后这个注入点让我们想到的漏洞 1、xss 2、sql注入

然后就是我们的模版rce
工具介绍 : SSTImap

安装一下依赖
使用 :
python sstimap.py -u "https://0a6800de041a131880a644a800e2001d.web-security-academy.net/?message=*"

这个工具的用法和sqlmap差不多 这个就表示成功 然后判断ssti是ERB类型的

这个工具有个不好的地方就是不会保留缓存
我们可以指定类型之后使用他的后渗透模式,也可以自己构造,看着上面的模版图
erb语法
<%= exec 'ls -al' %>

然后就发现我们的语句被嵌套到了这个模版中去 , 然后进行了前端的回显
或者使用工具的自动模式 :
第二个靶场
这个就比较隐晦了 不是那种明显的,这个其实是模版的语法用于post包中
登录提示给的账号密码之后,随便进入到一个文章中去
发现有个评论的功能 : 联想到ssti的前端模版就是一些输入框,评论区或者是聊天的地方
我们先对评论进行ssti试一下 先抓个包 :
我们首先猜测的是在 comment 然后这个内容会自动的加载到前端的模版中去
最后测试发现失败了,那就联系到名字也是会在前端进行回显
测试修改名字

然后返回我们的评论区 :
发现 7*7被执行了 所以这个就是注入点
最终的payload
blog-post-author-display=user.name}}{%25+import+os+%25}{{os.system('ls%20-al')

这个不能直接使用工具测试出来,手工是最好的
实验三
这个靶场模拟的是 后台ssti提取的一个场景
后台有个模拟修改前端的代码一个功能

可以进行编辑然后 就能在前端回显

payload :
模版 :Freemarker:
<#assign test="freemarker.template.utility.Execute"?new()> ${test("ls")}
之后这里就会出现