(OWASP汉化)攻击系列大全(五十):反射型DOM注入

翻译至Reflected DOM Injection

反射型DOM注入实际上是存储型XSS的一种.

攻击概述如下:

  1. 爬虫 G从攻击者页面A检索数据元素,并将内容提交到G [A](例如数据库行)的持久存储。
  2. 最终用户访问应用程序T.应用程序T的持久存储是{G}的集合。
  3. 最终用户与应用程序T的交互导致调用JavaScript代码,从而检索到G [A],并且由于在DOM持久存储之前或页面运行时的JavaScript执行期间由于失败而中止G [A]中的内容, G [A]作为有效代码被执行,而不是被正确地内插为一个标量状的原始数据值或闭包对象数据。

在持久存储之前,成熟编程的抓取工具经常试图从抓取的资源中去除恶意数据。此外,成熟编程的应用程序通常利用输出转义或JavaScript沙盒来防止执行抓取的数据(而不是安全地呈现)。尽管如此,混淆爬网资源上的数据可能会回避检测算法(尽管混淆可能暗示尝试的攻击),并且严格依赖搜寻资源的爬虫清理可能会导致存储的跨站点脚本在目标JavaScript上下文不活跃的情况下执行为此辩护。总之,当攻击成功时,由于不正确的数据验证,攻击成功。

Arshan Dabirsiaghi推测,在OWASP NYC AppSec 2008AppSec Europe 2008下一代跨站脚本蠕虫的演讲中,最受欢迎的搜索引擎最终会表现出这种攻击的脆弱性(另请参见构建和阻止下一代XSS蠕虫(Building and Stopping Next Generation XSS Worms)2008年5月8日 ,最近于2013年8月5日访问)。 Daniel Chechik和Anat Davidi通过在Google翻译网络应用程序和雅虎网站上展示这种漏洞证实了Dabirsiaghi的猜测。在2013年8月的DEF CON 21安全大会期间将此演示利用流行网站恶意使用RDI

DOM型XSS预防单提供了防御这种攻击的指南。