实验室:基本服务器端模板注入(代码上下文)
从业者
这个实验室很容易受到伤害服务器端模板注入由于它不安全使用龙卷风模板的方式。要解决实验室,请查看龙卷风文档以发现如何执行任意代码,然后删除Morale.txt
从卡洛斯的主目录中归档。
您可以使用以下凭据登录到自己的帐户:维纳:彼得
解决方案
- 在通过Burp代理流量的同时,请登录并在其中一篇博客文章中发表评论。
- 请注意,在“我的帐户”页面上,您可以选择是否希望该网站使用全名,名字或昵称。当您提交选择时
邮政
请求设置参数的值博客 - 作者 - 作者播放
要点用户名
,,,,user.first_name
, 或者user.nickname
。加载包含评论的页面时,上面的名称根据此参数的当前值更新了您的评论。
- 在Burp中,转到“代理”>“ HTTP历史记录”,并找到设置此参数的请求,即
帖子 /my-account /change-blog-post-author-display
,并将其发送给Burp Repeater。
研究龙卷风文档,发现模板表达式被双卷发包围,例如{{{some expression}}
。在Burp Repeater中,请注意,您可以摆脱表达式,并注入任意模板语法,如下:
blog-post-author-display = user.name}}} {{7*7}}
- 重新加载包含您的测试评论的页面。请注意,用户名现在说
Peter Wiener49}}
,表明在代码上下文中可能存在服务器端模板注入漏洞。
在龙卷风文档中,确定执行任意python的语法:
{%somepython%}
- 研究Python文档,以发现导入
操作系统
模块,您可以使用系统()
执行任意系统命令的方法。
结合此知识以构建有效载荷,以删除Carlos的文件:
{%导入OS%} {{os.System('rm/home/carlos/morale.txt')
在Burp Repeater中,回到帖子 /my-account /change-blog-post-author-display
。突破表达式,并将您的有效负载注入参数,记住URL对其进行编码如下:
blog-post-author-display = user.name}}} {%25+import+os+%25} {{os.system('rm%20/home/home/home/home/carlos/morale.txt')
- 重新加载包含您的注释的页面以执行模板并求解实验室。