规范链接中的 XSS 是否可能?

信息安全 渗透测试 xss
2021-08-21 05:36:53

在对我的网站进行定期渗透测试期间,我发现我可以关闭规范链接标签中的双引号,并使用简单的 javascript alert(1)输入onerror属性。

在此处输入图像描述

它在源代码中可见,但 javascript 未执行。

在此处输入图像描述

我也尝试了onload事件,但结果相同。

攻击者有没有办法使用不同的有效负载来执行 javascript?

1个回答

您可以使用与输入相同的技巧hidden

<link rel="canonical" accesskey="X" onclick="alert(1)" />

在 Linux 上,使用 ALT+SHIFT+X 触发有效负载。恕我直言,报告问题并修复它就足够了,但它确实需要一些不太可能的用户交互。

除此之外,如果没有更多代码,我认为没有办法在现代浏览器中利用它。

虽然link标签支持该onload属性,但它仅在成功加载某些内容时触发,例如:

<link rel="stylesheet" href="http://localhost/test.css" onload="alert(1)">

如果您的注入是<link href="[user input]" rel="canonical">,那么您可以通过http://somedomain/somecsssfile.css" rel="stylesheet" onload="alert(1).

WHATWG 规范定义必须使用第一个属性,因此任何浏览器都不太可能使用第二个属性,因此这不适用于您的情况。

我尝试了所有其他事件属性,但没有在正常页面加载时触发。

这篇博客文章指出,通过注入一个style属性,然后使用表达式来执行 JavaScript,这将在 IE7 和 IE8 下被利用。

如果有额外的 JavaScript 代码不安全地处理元素,这也可能成为可利用的(见这里的一个有趣的例子)。