src 属性中基于 DOM 的 XSS

信息安全 xss javascript dom
2021-08-14 13:18:22

我有以下 JavaScript 代码:

var url= document.location.href;
document.write("<img src='?bla="+document.location.href+"'>");

当我将例如附加到 URL 时,我能够注入代码?b=a'onX=alert(1);',但这仅适用于'不会被编码的浏览器。

还有其他我没有考虑到的攻击吗?有没有其他方法可以突破src属性?

1个回答

还有其他我没有考虑到的攻击吗?

为了防止单引号表单被编码,您可以尝试将有效负载潜入路径而不是查询字符串。例如,如果易受攻击的页面位于http://example.com/path/vulnerable.php您可以尝试这样的事情:

http://example.com/ 'onerror='payload /..%2Fpath/vulnerable.php

这个想法是一些服务器隐式解析路径。他们不检查第一个文件夹是否'onerror='payload确实存在,而是立即切换回父目录 ( ../) 并解析路径的其余部分而不发出任何重定向。(对斜线进行 URL 编码以%2f防止浏览器自动缩短路径。)

还有另一种方法可以突破 src 属性吗?

不,匹配的引号是您逃离属性值的唯一机会,如本答案中所述。