springBoot Web开发框架
然后开始做实验,调配置。
基础配置:

*如何执行数据查询:




这个模板爆发过漏洞:

模板:


渲染时要用controllen,字符串就用restcontroll er。
安全问题

有些页面会根据后面跟着东西替换中英文



这个漏洞是 Thymeleaf 模板注入(Server-Side Template Injection, SSTI),属于服务器端模板注入漏洞,原理如下:
1. 模板引擎的作用
Thymeleaf 是一种 Java 模板引擎,用于将动态数据(如控制器传递的变量)渲染到 HTML 页面中。它支持通过表达式(如 ${…} 或 [(…)] )在模板中插入动态内容。
2. 漏洞产生的核心原因
当应用程序将用户可控的输入直接作为模板表达式的一部分进行渲染,且未对输入进行转义或严格过滤时,攻击者可以构造恶意输入,注入可执行的代码(如 Java 代码),这些代码会被模板引擎解析并执行。
3. 漏洞利用过程(结合你截图中的场景)
1. 用户输入被带入模板
你的控制器中存在类似逻辑:
java
@RequestMapping(“/”)
public String index(@RequestParam String lang, Model model) {
model.addAttribute(“lang”, lang); // 将用户输入的 lang 参数直接传入模板
return “index”; // 渲染 templates/index.html
}
2. 模板中使用了用户输入的变量
若 templates/index.html 中存在 Thymeleaf 表达式,且直接使用了该变量(如 ${lang} ),则用户输入会被当作模板表达式的一部分解析:
html
3. 攻击者构造恶意输入
攻击者在 URL 中传入精心构造的参数,例如:
plaintext
http://localhost:8080/?lang=${T(java.lang.Runtime).getRuntime().exec(‘calc’)}
(注:截图中的注入代码更复杂,本质是通过 java.util.Scanner 等类执行系统命令)
4. 模板引擎执行恶意代码
Thymeleaf 解析模板时,会将 ${…} 中的内容视为表达式并执行。上述注入的代码会调用 Runtime.getRuntime().exec(‘calc’) ,在服务器端执行系统命令(如打开计算器),从而导致远程代码执行(RCE)。
4. 危害
– 执行任意系统命令(如删除文件、反弹shell);
– 读取/修改服务器敏感文件;
– 完全控制服务器。
5. 修复建议
1. 避免将用户输入直接用于模板渲染
若需传递用户输入到模板,应仅作为纯文本使用,而非模板表达式的一部分。例如:
java
model.addAttribute(“lang”, “en”); // 传递固定值或经过严格过滤后的值
2. 对用户输入进行严格过滤/转义
使用 StringEscapeUtils 等工具对用户输入进行 HTML 转义,确保其不会被解析为模板表达式:
java
import org.apache.commons.text.StringEscapeUtils;
String safeLang = StringEscapeUtils.escapeHtml4(lang);
model.addAttribute(“lang”, safeLang);
3. 升级 Thymeleaf 版本
高版本 Thymeleaf 增加了安全限制(如 spring.thymeleaf.mode=HTML 限制表达式执行)。
4. 使用 @RequestParam 时指定默认值/验证
避免直接使用用户输入,可设置默认值或通过正则验证输入格式:
java
@RequestParam(defaultValue = “en”, required = false) String lang
版本有漏洞,加上有控制变量。
文章来源于互联网:小迪自用web笔记38
相关推荐: 企业用文心一言优化员工培训:自动生成岗位考核题库的实操
在当今竞争激烈的商业环境中,员工培训是企业提升核心竞争力的关键环节。传统培训方式往往效率低下、成本高昂,难以满足快速变化的岗位需求。例如,客服岗位需要员工掌握沟通技巧,但手动设计考核题库耗时费力,且难以保证题目质量。随着人工智能技术的飞速发展,企业可以借助大语…
5bei.cn大模型教程网










