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

JavaSec-SSTI - 模板引擎注入

简介

SSTI(Server Side Template Injection):模板引擎是一种通过将模板中的占位符替换为实际数据来动态生成内容的工具,如HTML页面、邮件等。它简化了视图层的设计,但如果未对用户输入进行有效校验,可能导致安全风险如任意代码执行 Java中常用的模板引擎有Freemarker、Velocity、Thymeleaf等,在这里以Thymeleaf引擎为例

1.漏洞场景:thymeleaf模版注入

攻击者可以操控return中的值,就有可能造成模板注入漏洞,当方法返回为void时,thymeleaf会以URL路由为视图名称,调用模板视图去解析

缺陷代码

public String vul1(@RequestParam String para, Model model) {// 用户输入直接拼接到模板路径,可能导致SSTI(服务器端模板注入)漏洞return "/vul/ssti/" + para;
}public void vul2(@PathVariable String path) {log.info("SSTI注入:"+path);
}// 缺陷组件版本参考
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>
<!--        <version>2.7.14</version>--><version>2.4.1</version><relativePath/>
</parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.4.1</version>
</dependency>

2.安全场景:thymeleaf模版注入

安全编码规范:1、避免用户输入直接作为模板名称或路径2、对所有动态内容进行严格校验和转义,包括模板变量3、选择支持自动转义的安全模板引擎(如Thymeleaf的th:text)4、使用白名单限制动态渲染的模板,控制可访问的模板范围

public String safe1(String para, Model model) {List<String> white_list = new ArrayList<>(Arrays.asList("vul", "ssti"));if (white_list.contains(para)){return "vul/ssti" + para;} else{return "common/401";}
}
@GetMapping("/safe2/{path}")
public void safe2(@PathVariable String path, HttpServletResponse response) {log.info("SSTI注入:"+path);
}

http://www.lqws.cn/news/144991.html

相关文章:

  • 深度学习学习率优化方法——pytorch中各类warm up策略
  • 桂花网蓝牙网关物联网医院动态血糖管理应用案例
  • Vue.js 组件:深入理解与实践
  • Spring Boot缓存组件Ehcache、Caffeine、Redis、Hazelcast
  • 使用 C/C++ 和 OpenCV 添加图片水印
  • Android协程学习
  • 负载均衡将https请求转发后端http服务报错:The plain HTTP request was sent to HTTPS port
  • 模块化架构下的前端调试体系建设:WebDebugX 与多工具协同的工程实践
  • 【图像处理3D】:焦距的像素单位标定
  • 深入浅出 Scrapy:打造高效、强大的 Python 网络爬虫
  • Xcode 16.4 + iOS 18 系统运行时崩溃:___cxa_current_primary_exception 符号丢失的原因与解决方案
  • 基于cornerstone3D的dicom影像浏览器 第二十八章 LabelTool文字标记,L标记,R标记及标记样式设置
  • AMFCNN-RKD:齿轮故障诊断的轻量级多传感器融合模型详解(python代码复现)
  • STM32 NVIC中断控制器
  • 鸿蒙APP测试实战:从HDC命令到专项测试
  • XHR / Fetch / Axios 请求的取消请求与请求重试
  • 【Linux】网络--数据链路层--以太网
  • 4.2 HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战
  • Elasticsearch:spring2.x集成elasticsearch8.x
  • CB/T 3361-2019 甲板敷料检测
  • HarmonyOS:Counter计数器组件
  • 免费工具-微软Bing Video Creator
  • 塑料回收新突破!Nature 重磅:2 小时解聚碳纤维废料
  • 【推荐算法】WideDeep推荐模型:融合记忆与泛化的智能推荐引擎
  • 【Linux】POSIX信号量
  • 第20讲、Odoo 18 翻译机制与 PO 文件详解
  • YOLOv8 × VisDrone 全流程实战:训练你的无人机识别模型 AI(第一部分:数据集准备)
  • 鸿蒙缺少WMIC missing WMIC
  • 《C++ 模板》
  • 仓库自动化搬运:自动叉车与AGV选型要点及核心技术解析