1. beplay体育能用吗网络安全学院
  2. 服务器端模板注入
  3. 利用

利用服务器端模板注入漏洞

在本节中,我们将更加仔细地研究一些典型的服务器端模板注入脆弱性并证明如何使用我们的高级方法论。通过将此过程付诸实践,您可以潜在地发现并利用各种服务器端模板注入漏洞。

一旦发现了服务器端模板注入漏洞,并确定所使用的模板引擎,成功的开发通常涉及以下过程。

除非您已经知道内部模板引擎,否则阅读文档通常是首先要开始的。虽然这可能不是花时间的最令人兴奋的方式,但重要的是不要低估文档的有用信息来源。

学习基本模板语法

学习基本语法显然很重要,以及关键功能和变量的处理。即使是学习如何在模板中嵌入本地代码块的简单性,有时也会迅速导致利用。例如,一旦您知道正在使用基于Python的Mako模板引擎,那么实现远程代码执行就可以一样简单:

<%导入os x = os.popen('id')。read()%> $ {x}

在未安装的环境中,在许多常见的模板引擎中,实现远程代码执行并使用它来读取,编辑或删除任意文件也很简单。

阅读有关安全含义的信息

除了提供如何创建和使用模板的基本原理外,该文档还可以提供某种“安全”部分。本节的名称将有所不同,但通常会概述人们应避免使用模板的所有潜在危险事物。这可能是一个宝贵的资源,即使是您在审核期间应该寻找的行为以及如何利用它们的行为的一种备忘单。

即使没有专用的“安全性”部分,如果特定的内置对象或功能可能构成安全风险,文档中几乎总是有警告。警告可能不会提供太多的细节,但至少应该标记为需要调查的特定内置的东西。

例如,在ERB中,该文档显示您可以列出所有目录,然后读取任意文件如下:

<%= dir.entries('/')%> <%= file.open('/example/nututary-file')。读取%>

寻找已知利用

利用服务器端模板注入漏洞的另一个关键方面是善于在线寻找其他资源。一旦能够识别所使用的模板引擎,就应该浏览网络以获取其他人可能已经发现的任何漏洞。beplay体育能用吗由于广泛使用了一些主要的模板引擎,有时可以找到有据可查的漏洞利用,您可能可以调整自己的目标网站。beplay体育能用吗

探索

此时,您可能已经使用文档偶然发现了可行的利用。如果没有,下一步是探索环境并尝试发现您访问的所有对象。

许多模板引擎都会暴露某种类型的“自我”或“环境”对象,该对象像一个名称空间,包含模板引擎支持的所有对象,方法和属性。如果存在这样的对象,则可以使用它来生成范围中的对象列表。例如,在基于Java的模板语言中,您有时可以使用以下注入列出环境中的所有变量:

$ {t(java.lang.system).getEnv()}

这可以构成创建潜在有趣的对象和方法以进一步研究的基础。此外,Burp Suite专业人士用户,入侵者为蛮横的变量名称提供了一个内置文字列表。

开发人员提供的对象

重要的是要注意,网站将包含由Web开发人员提供的模板和自定beplay体育能用吗义特定于网站特定对象提供的内置对象。您应该特别注意这些非标准对象,因为它们特别有可能包含敏感信息或可剥削的方法。由于这些对象在同一网站中的不同模板之间可能会有所不同,因此请注意,您可能需要在每个不同模板的上下文中研究对象的行为,然后才能找到利用它的方法beplay体育能用吗。

虽然服务器端模板注入可能会导致远程代码执行并完全接管服务器,但实际上,这并不总是可以实现的。但是,仅仅因为您排除了远程代码执行,这并不一定意味着没有其他类型的利用潜力。您仍然可以利用服务器端模板注射漏洞来用于其他高度利用,例如目录遍历,访问敏感数据。

创建自定义攻击

到目前为止,我们主要考虑通过重复使用已记录的利用或使用模板引擎中的知名漏洞来构建攻击。但是,有时您需要构建自定义利用。例如,您可能会发现模板引擎在沙箱中执行模板,这可能使剥削变得困难甚至不可能。

确定攻击表面后,如果没有明显的方法来利用漏洞,则应通过审查每个功能以进行利用行为来进行传统的审核技术。通过有条不紊地在此过程中工作,您有时可能能够构建复杂的攻击,甚至能够利用更安全的目标。

使用对象链构建自定义利用

如上所述,第一步是识别您可以访问的对象和方法。某些对象可能会立即跳出来作为有趣的。通过将自己的知识和文档中提供的信息结合在一起,您应该能够将需要更彻底研究的对象列出。

在研究对象的文档时,请特别注意这些对象授予访问的方法以及它们返回的对象。通过深入到文档中,您可以发现可以将它们链在一起的对象和方法组合。将正确的对象和方法链在一起,有时您可以访问最初出现的危险功能和敏感数据。

例如,在基于Java的模板引擎速度中,您可以访问克拉斯史瓦对象调用$类。研究文档表明您可以链接$ class.inspect()方法和$ class.type属性以获取对任意对象的引用。过去,这已被利用以在目标系统上执行Shell命令,如下所示:

$ class.inspect(“ java.lang.runtime”)。

使用开发人员提供的对象构建自定义利用

一些模板引擎默认情况下在安全的,锁定的环境中运行,以尽可能减轻关联的风险。尽管这使得很难利用此类模板进行远程代码执行,但是暴露于模板的开发人员创建的对象可以提供进一步的,不太战斗的攻击表面。

但是,尽管通常为模板内置的模板提供了大量文档,但几乎肯定没有记录特定于站点的对象。因此,计算如何利用它们将需要您手动调查网站的行为,以识别攻击表面并相应地构建自己的自定义利用。beplay体育能用吗

免费注册以跟踪您的学习进度

通过Portswigger的网络安全学院工作的好处beplay官网可以赌beplay体育能用吗
  • 练习在现实目标上利用漏洞。

  • 记录您从学徒到专家的发展。

  • 看看您在我们的名人堂中排名。

已经有一个帐户?在此登录