在本节中,将了解基于DOM的cookie操作和基于DOM的开放式重定向,并将对这两种攻击进行演示,同时提出建议以减少漏洞被利用的方法。
什么是基于DOM的cookie操作?
一些基于DOM的漏洞允许攻击者操纵他们通常无法控制的数据,这会将通常安全的数据类型(例如cookie)转换为潜在来源。当脚本攻击者可控制的数据写入cookie的值时,就会出现基于DOM的cookie操作漏洞。
攻击者可能能够利用此漏洞构造一个URL,如果另一个用户访问该URL,将在用户的cookie中设置任意值。
许多接收器本身基本上是无害的,但基于DOM的cookie操纵攻击证明了低严重性漏洞有时可以用作高严重性攻击的利用链的一部分。
例如,如果JavaScript将数据从源写入document.cookie而不首先对其进行清理,则攻击者可以操纵单个cookie的值来注入任意值:
如果网站在没有对它们进行HTML编码的情况下不安全地反应。
场景试验-基于DOM的cookie操作:
https://portswigger.net/web-security/dom-based/cookie-manipulation/lab-dom-cookie-manipulation
场景说明:
这个试验场景演示了DOM的客户端cookie操作。
试验目的:
要完成这个试验,需要注入一个会在不同页面上引发XSS的cookie并调用print()函数,需要使用漏洞利用服务器将受害者引导到正确的页面。
攻击过程:
①先随便访问一个产品,然后再访问首页,可以看到使用了名为lastViewProduct作为客户端cookie,其值是用户访问的最后一个产品页面的URL
②打开"exploit server",把下面的代码放到Body中,注意替换下试验URL
<iframe src="https://your-lab-id.web-security-academy.net/product?productId=1&'><script>print()</script>" onload="if(!window.x)this.src='https://your-lab-id.web-security-academy.net';window.x=1;">
③保存后发送给受害者即可完成试验。
试验小结:
iframe的原始来源与其中一个产品页面的URL匹配,但末尾添加了一个JavaScript的Payload。第一次加载iframe时,浏览器会暂时打开恶意URL,然后将其保存为lastViewedProduct cookie的值。Onload事件处理程序确保受害者立即被重定向到主页,而不知道这种操作曾经发生过。虽然受害者的浏览器保存了中毒的cookie,但加载主页将导致Payload被执行。
基于DOM的cookie操纵攻击的影响是什么?
此漏洞的潜在影响取决于cookie在网站中所扮演的角色。
如果cookie用于控制某些用户操作(例如,生产与演示模式设置)导致的行为,那么攻击者可能能够通过操纵cookie的值来导致用户执行意外操作。
如果cookie用于跟踪用户的会话,那么攻击者可能能够执行会话固定攻击,其中他们将cookie的值设置为他们从网站获得的有效令牌,然后在会话期间劫持受害者随后与网站的沪东。
像这样的cookie操纵漏洞不仅可用于攻击易受攻击的网站,还可用于攻击同一父域下的任何其他网站。
哪些接收器会导致基于DOM的cookie操作漏洞?
document.cookie接收器可能导致基于DOM的cookie操作漏洞。
如何防止基于DOM的cookie操作漏洞?
除了基于DOM的漏洞页面上描述的一般措施外,还应避免使用源自不受信任来源的数据动态写入cookie。
什么是基于DOM的开放重定向?
当脚本将攻击者可控制的数据写入可触发跨域导航的接收器时,会出现基于DOM的开放重定向漏洞。
例如,下面的代码由于处理location.hash属性的方式不安全而易受到攻击:
攻击者可能能够利用此漏洞构造一个URL,如果其他用户访问该URL,将导致重定向到任意外部域。
基于DOM的开放重定向有什么影响?
例如,可以利用此行为来促进针对网站用户的网络钓鱼攻击。
使用针对正确域和有效TLS证书的真实应用程序URL的能力为网络钓鱼攻击提供了可信度,因此许多用户,即使他们验证了这些功能,也不会注意到随后重定向到不同的域。
如果攻击者能够控制传递给重定向API的字符串的开头,那么就有可能将此漏洞升级为JavaScript注入攻击,当浏览器处理URL时,攻击者可以使用javascript:伪协议构造URL用来执行任意代码。
场景试验-基于DOM的开放重定向:
https://portswigger.net/web-security/dom-based/open-redirection/lab-dom-open-redirection
场景说明:
这个试验场景包含一个基于DOM的开放重定向漏洞。
试验目的:
要完成这个试验,需要利用这个漏洞并将受害者重定向到漏洞利用服务器。
攻击过程:
①博客文章页面包含下面的链接,这个链接可以返回博客的主页
②构建以下URL并访问,注意修改下试验场景地址,即可完成试验
https://your-lab-id.web-security-academy.net/post?postId=4&url=https://your-exploit-server-id.web-security-academy.net/
试验小结:
url参数包含一个开放重定向漏洞,允许更改"Back to Blog"链接将用户带到的位置,因为没有经过源端过滤,所以url会很容易被注入。
哪些接收器会导致基于DOM的开放重定向漏洞?
以下是一些可能导致基于DOM的开放重定向漏洞的主要接收器:
如何防止基于DOM的开放重定向漏洞?
除了DOM漏洞中描述的一般措施外,还应避免使用源自任何不受信任源的数据动态设置重定向目标。
SQL注入攻击-检索隐藏的数据
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):基于DOM的漏洞-攻击示例(二)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论