基于DOM的开放重定向
翻译
原文:https://portswigger.net/web-security/dom-based/open-redirection
- name: 翻译
desc: 原文:https://portswigger.net/web-security/dom-based/open-redirection
bgColor: '#F0DFB1'
textColor: 'green'
1
2
3
4
2
3
4
# 基于DOM的开放重定向
在本节中,我们将讨论什么是基于 DOM 的开放重定向,演示如何构建攻击,并提供一些减少基于 DOM 的开放重定向漏洞的建议和方法。
# 1什么是基于DOM的开放重定向?
当一个脚本把攻击者可控制的数据,写入可触发 跨域导航 的接收器时,就会出现基于 DOM 的开放重定向漏洞。例如,以下代码由于处理location.hash
属性的方式不安全,而容易受到攻击:
let url = /https?:\/\/.+/.exec(location.hash);
if (url) {
location = url[0];
}
1
2
3
4
2
3
4
攻击者可以利用此漏洞构造一个 URL,如果其他用户访问该 URL,将会被重定向到任意外部域。
# 2基于DOM的开放重定向有什么影响?
例如,可以利用此行为来促进针对网站用户的网络钓鱼攻击。面向正确域的真实应用程序 URL,再加上有效的 TLS 证书(如果使用了TLS),这种能力为网络钓鱼攻击提供了可信度,因为许多用户即使验证了这些功能,也不会注意到后续的重定向操作。
如果攻击者能够控制传递给重定向 API 的字符串的开头,则有可能将此漏洞升级为 JavaScript 注入攻击。攻击者可以使用伪协议javascript:
来构造一个 URL,以便在浏览器处理 URL 时执行任意代码。
- name: 实验室-从业者
desc: 基于DOM的开放重定向 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/dom-based/open-redirection/lab-dom-open-redirection
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 4如何防范基于DOM的开放重定向漏洞
除了 DOM 漏洞主题中描述的一般措施外,还应避免:使用来自任何不受信任源的数据,而动态设置重定向目标。
编辑 (opens new window)