模板注入基本原理
如果用户输入作为【模板当中变量 的值】,模板引擎一般会对用户输入进行编码转义,不容易造成XSS攻击。
这段代码输入<script>alert(1)</script>
会原样输出,因为进行了HTML实体编码。
但是如果用户输入作为了【模板内容 的一部分】,用户输入会原样输出。
这段代码输入<script>alert(1)</script>
会造成XSS漏洞。
如果输入Vuln{%23 comment %23}{{2*8}}
,会执行2*8这个语句,输出Hello Vuln16
。因为经过渲染后,模板变成了Hello Vuln{# comment #}{{2\*8}}
。
不同的模板会有不同的语法,一般使用Detect-Identify-Expoit的利用流程。
模板总结:模板总结