技术分享手把手教你如何完成Ruby ERB模板注入

Posted 安钛信安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享手把手教你如何完成Ruby ERB模板注入相关的知识,希望对你有一定的参考价值。

前排扯逼

最近上班好累啊,希望各位都有妹子陪-。-

结尾x


前言:现在Web应用的模板


现在的Web应用中,许多客户端以及服务器端经常会用到模板。许多模板引擎提供了多种不同的编程语言实现,比如Smarty、Mako、Jinja2、Jade、Velocity、Freemaker以及Twig等模板。作为注入攻击大家族中的一员,模板注入这种攻击形式对不同的目标所造成的影响也有所不同。对于AngularJS而言,模板注入攻击可以达到XSS攻击效果,对于服务器端的注入攻击而言,模板注入攻击可以达到远程代码执行效果。

作为大名鼎鼎BurpSuite工具的开发商,Portswigger写了一篇文章详细介绍了服务器端的模板注入攻击。对攻击者而言,首先需要做的就是识别模板引擎、枚举可访问的类或方法,最终利用这些信息完成预期的操作,比如读取或写入文件、命令执行或其他操作等。攻击者具体能执行哪些操作取决于可访问的类方法或函数的能力范围。


模板攻击:Ruby/ERB模板注入


在本文中,我们会使用TrustedSec应用安全课程中的实验目标,演练一遍Ruby/ERB模板注入攻击。我们的实验对象是一个简单的应用,该应用可以模拟包含模板编辑功能的一种IT服务台(Helpdesk)报告工具。我们可以通过这个应用来编辑html及模板,也可以预览编辑效果,如下图所示:

使用预览(preview)按钮提交表格后,呈现在我们眼前是包含用户信息以及用户创建时间的一个页面:

【技术分享】手把手教你如何完成Ruby ERB模板注入

观察代码中获取username以及tombstone时所使用的语法,根据其中的<%=语法以及其他一些Ruby技术,我们可以猜测这段代码属于Ruby/ERB代码。基于这个判断,我们可以编辑输入数据,测试我们是否可以进行模板注入。大致浏览ERB文档后,我们了解到<%=语法可以用来执行Ruby语句,并会尝试将结果转换为字符串,以附在最终的结果文本中。我们可以使用如下攻击载荷来尝试执行数学运算:

(c)2006-2024 SYSTEM All Rights Reserved IT常识