Agent Skills
返回列表
🔒

SSTI 模板注入

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/ssti-sh-vxxsnt。

技能介绍

要解决的具体问题

模板引擎把用户输入当代码渲染的场景里,注入点往往藏在不起眼的功能后面:邮件预览、头像裁剪、错误页定制、报表导出。测试难点不在于「有没有注入」,而在于三件事:判断渲染用的是哪个引擎、在黑盒条件下拿到回显、绕开针对危险标签和函数的过滤。各引擎语法差异很大,Jinja2 的 {{7*7}} 和 Freemarker 的 <#assign x=7*7> 没有可比性,凭记忆试错既慢又容易漏。

技能如何工作

它把 SSTI 测试拆成一条有序清单,而不是零散 payload 列表:

  • 引擎识别:先用 polyglot 载荷做无差别探测,一次请求覆盖多种引擎语法,按回显差异缩小范围。
  • 引擎专属载荷:引擎确认后,从 Jinja2、Twig、Freemarker、Pebble、Velocity 各自的语法体系里取对应的 RCE 载荷。
  • 盲注处理:针对无直接回显的目标,构造基于时间的探测或回连通道,而不是只依赖可见输出。
  • 过滤绕过:遇到黑名单拦截时,调整载荷的编码、拼接或大小写形式再试。

技能按顺序推进清单项,逐项标记已完成的技术点,并基于当前结果建议下一步动作——比如引擎确认后直接进入 RCE 验证,而不是继续盲搜。

适用边界与注意点

面向授权的渗透测试场景。清单覆盖的是模板注入这一个攻击面,不替代完整的漏洞评估流程;引擎识别结果依赖实际回显,缓存、延迟或 WAF 干扰可能影响判定。执行前确认目标在授权范围内,因为 RCE 载荷一旦触发就是真实的命令执行。

使用场景

  • 黑盒渗透测试中需要先确认目标的模板引擎类型,再决定用哪套语法做 RCE 验证。
  • 靶场环境中测试 Jinja2 渲染链路,需要构造 polyglot 载荷做无差别探测。
  • 遇到黑名单拦截模板危险标签时,需要用编码或拼接变形的载荷绕过过滤。
  • 目标无直接回显时,需要用基于时间的盲注探测确认注入点是否真实存在。

适合人员

  • 负责 Web 应用渗透测试的工程师,需要一套覆盖多引擎的 SSTI 检查清单来做黑盒验证。
  • 做 CTF 的选手,遇到模板渲染题时需要快速定位引擎类型并调出对应的 RCE 载荷。
  • 开发安全工具的工程师,需要在扫描器里实现引擎识别和载荷变形逻辑。
  • 内部红队成员,在授权范围内测试业务功能时需要对模板注入面做系统排查。