究竟是什么"基于DOM的XSS攻击"?

时间:2015-02-16 02:53:36

标签: web xss

我从here读到:

  

基于DOM的XSS攻击:有效负载由于执行而执行   在受害者的浏览器中修改DOM环境   原始客户端脚本,以便客户端代码运行在   意外的方式。也就是说,页面本身不会改变,但是   由于页面中包含的客户端代码执行方式不同   DOM环境中发生的恶意修改。

有人可以举一个例子吗?它不像Stored XSS AttackReflected XSS Attack那样容易拍照。

2 个答案:

答案 0 :(得分:1)

该文字看起来是description of DOM-based XSS from the OWASP wiki部分的副本(反之亦然)。

基本上,这个想法是,与#34;反映"或者"存储" XSS,攻击者实际上并不需要将代码包含在从服务器发回的文档中,而是利用已经存在的脚本并使用攻击者可以使用的某些属性或数据。变化

他们给出的示例是一个使用document.write属性的一部分调用document.location.href的脚本。如果没有让服务器存储或反映任何内容,攻击者可以通过将<script>放入URL来获取在该页面上执行的代码。

答案 1 :(得分:1)

在基于DOM的XSS中,来自服务器的HTTP响应永远不会更改,但由于DOM环境中发生的恶意修改,页面中包含的客户端代码执行方式不同。以下是基于DOM的XSS(取自OWASP's website)的示例:

假设使用以下代码创建表单以让用户选择他/她的首选语言。查询字符串中还提供了默认语言,作为参数“default”。

Select your language:
<select><script>    
document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>");    
document.write("<OPTION value=2>English</OPTION>");    
</script></select>

使用以下URL调用页面:

http://www.some.site/page.html?default=French

针对此页面的基于DOM的XSS攻击可以通过将以下URL发送给受害者来完成:

http://www.some.site/page.html?default=<script>alert(document.cookie)</script>

页面上的网页(使用document.write处理初始javascript后)将如下所示:

Select your language:
<select>    
<OPTION value=1><script>alert(document.cookie)</script></OPTION>
<OPTION value=2>English</OPTION>
</select>

奖金:Self-XSS

Facebook为XSS诈骗提出了fancy name,诈骗者诱骗用户将恶意内容复制并粘贴到浏览器的Web开发者控制台中。