暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于DOM的开放重定向

WEB漏洞挖掘 2021-09-24
1349

在本节中,我们将讨论什么是基于DOM的开放重定向,演示如何构造这种攻击,以及如何防御这种攻击。

1. 什么是基于DOM的开放重定向

当script将攻击者将可控制的数据写入到可以触发跨域导航的接收器时,就会出现基于DOM的开放重定向漏洞。例如,由于未安全处理location.hash属性,下面的代码很容易受到攻击:

let url = /https?:\/\/.+/.exec(location.hash);
if (url) {
 location = url[0];
}

攻击者可能能够使用此漏洞构建一个URL,如果其他用户访问该URL,将导致重定向到任意外部域。

2. 基于DOM的开放重定向漏洞影响

例如,这种漏洞可以被用来更容易的对网站用户实施钓鱼攻击。通过使用原域名的应用程序URL和有效的TLS证书(如果使用TLS),这为钓鱼攻击提供了可信性,因为许多用户,即使他们验证了这些特性,也不会注意到随后的重定向到其他域名。

如果攻击者能够控制传递给重定向API的字符串的开头,那么就有可能将此漏洞升级为JavaScript注入攻击。攻击者可以使用javascript:伪协议构造URL,以便在浏览器处理URL时执行任意代码。

3. 哪些接收器会导致基于DOM的开放重定向漏洞

以下是一些可能导致基于DOM的开放重定向漏洞的主要接收器:

location
location.host
location.hostname
location.href
location.pathname
location.search
location.protocol
location.assign()
location.replace()
open()
element.srcdoc
XMLHttpRequest.open()
XMLHttpRequest.send()
jQuery.ajax()
$.ajax()

4. 如何防御基于DOM的开放重定向漏洞

除了前文 “基于DOM的漏洞” 中描述的常规措施外,您应该避免使用来自任何不可信源的数据、动态设定重定向目标。


文章转载自WEB漏洞挖掘,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论