SCENARIO:
网页显示使用这些javascript行的错误登录页面
<script>
let queryParams = new URLSearchParams(window.location.search);
document.getElementById("message").innerText = queryParams.get("message");
let link = document.getElementById("link");
link.innerText = queryParams.get("linkText");
link.href = queryParams.get("linkUrl");
</script>
最后一条javascript行使我可以将javascript隐藏在网页中的链接中,从而制作出如下所示的网址。
1)用户单击此链接的简化版
2)用户单击“单击此处发光”
3)警报打开
我的灵感来自于portswigger上的这篇文章https://portswigger.net/web-security/cross-site-scripting/dom-based特别是从此示例
如果正在使用JavaScript库(例如jQuery,请注意 可以更改页面上的DOM元素的接收器。例如, jQuery中的attr()函数可以更改DOM元素的属性。如果 数据是从用户控制的源(例如URL)中读取的,然后 传递给attr()函数,则有可能进行操纵 发送给XSS的值。例如,这里有一些JavaScript 使用来自以下位置的数据更改锚元素的href属性 网址:
$(function(){ $('#backLink').attr("href",(new
URLSearchParams(window.location.search)).get('returnUrl')); });
您可以通过修改URL以便利用location.search 源包含恶意的JavaScript URL。页面的后 JavaScript将此恶意URL应用于反向链接的href, 单击后退链接将执行它:
?returnUrl=javascript:alert(document.domain)
问题:对我来说,它们看起来像是同样的攻击,但有人告诉我这是一种自我XSS。无论如何,我读到self-XSS期望用户在控制台中自我粘贴javascript代码。所以我很困惑,我想知道它是哪种类型。另外,是否可以视为中等或高度严重性的漏洞?
命名没什么大不了,但是
这绝对是一个漏洞,根据CVSSv3的说法,它很可能是一种媒介,但您可以针对这种特定情况进行计算。
这不是xss本身,您自己通过链接显示了一种方法,如果攻击者将其发送给受害者,则该页面将很容易受到攻击。
这绝对是dom xss,因为它完全在javascript中,不需要服务器往返。