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);
}
相关推荐
Pniubi3 小时前
HashMap的扩容和树化边界
java·开发语言
Mikko73 小时前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师3 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.4 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼5 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
福兮说6 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
Demons_kirit6 小时前
CTFHub 信息泄露通关笔记:Git泄露 Log - 教程
笔记·git·网络安全
苏能润滑油油液文哥7 小时前
储能液冷安全边界解析:从热失控链条看冷却液的介入区间与选型指标
安全
Vex2une7 小时前
Docker Desktop WSL2后端:2026年性能调优与避坑实战指南
windows·docker·desktop·gpu容器·容器开发·virtiofs·buildkit
小天源7 小时前
从 Nginx 日志到访问分析:轻量化网站监测服务的架构实践
jvm·nginx·网络安全·架构·网络监控