当前位置: 首页 > ds >正文

web攻防之SSTI 注入漏洞

知识简介 : 模版引擎和框架的区别

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')

这个不能直接使用工具测试出来,手工是最好的

实验三

Login - PortSwigger

这个靶场模拟的是 后台ssti提取的一个场景

后台有个模拟修改前端的代码一个功能

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

payload :

模版 :Freemarker:
<#assign test="freemarker.template.utility.Execute"?new()> ${test("ls")}

之后这里就会出现

http://www.xdnf.cn/news/10874.html

相关文章:

  • 黑马Java面试笔记之 集合篇(算法复杂度+ArrayList+)
  • 【数据库】安全性
  • 【笔记】使用Media Creation Tool给新主机装win10魔改iso
  • 00 Deep learning 之回归、拟合、逻辑回归
  • SAP学习笔记 - 开发20 - 前端Fiori开发 Nest View(嵌套视图) ,Fragment(片段)
  • 深入解析 MultipartFile:Spring 框架下的高效文件处理方案
  • backend 服务尝试连接 qdrant 容器,但失败了,返回 502 Bad Gateway 问题排查
  • [Java恶补day14] 56. 合并区间
  • JAVA获取ES连接并查询所有数据
  • RTP over TCP 模式
  • 如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)
  • 4-C#的不同窗口传值
  • 洛谷P12610 ——[CCC 2025 Junior] Donut Shop
  • 转战海外 Web3 远程工作指南
  • (10)Fiddler抓包-Fiddler如何设置捕获Firefox浏览器的Https会话
  • 双周报Vol.73:移除使用方法实现 trait 、新增了 “错误多态” 功能、.语法支持使用 _ 的匿名函数...
  • 16QAM在瑞利信道下的性能仿真:从理论到实践的完整解析(附完整代码)
  • 【HarmonyOS 5】鸿蒙Taro跨端框架
  • 【TMS570LC4357】之相关驱动开发学习记录1
  • 总结:线程安全问题的原因和解决方案
  • 初识vue3(vue简介,环境配置,setup语法糖)
  • LlamaIndex的IngestionPipeline添加本地存储(本地文档存储)
  • Unity 环境搭建
  • 【springcloud】快速搭建一套分布式服务springcloudalibaba(四)
  • Python中join()方法完全指南:参数要求与常见用法解析
  • 【深度学习新浪潮】以Dify为例的大模型平台的对比分析
  • 38、响应处理-【源码分析】-HTTPMessageConverter原理
  • C++.双指针算法(1.1目录修正)
  • CA-Net复现
  • 多租户系统的实现方式