为什么有些人认为二阶(又名持久性)XS是不正确的XSS



我正在阅读" Web应用程序Hacker的手册",它讨论了一阶(又称反射(XSS和2阶(又称持久性(XSS之间的差异。它提到了反射的XSS是如何利用查询字符串参数的不完整或不存在的消毒,以将任意脚本执行到用户的DOM中,而无需将任何恶意代码持续到该应用程序数据库中,以及2nd-ford XSS实际上是如何坚持的恶意代码

在用户的DOM中执行。

我的问题涉及作者对第二阶XSS的删除(如果您有方便的副本,请参见第438页(。该书的描述指出:

对存储的XSS漏洞的攻击通常至少涉及 该应用程序的两个请求。首先,攻击者发布了一些 精心设计的数据包含应用程序存储的恶意代码。在 第二,受害者查看包含攻击者数据的页面,以及 当脚本在 受害者的浏览器。因此,脆弱性有时也是 称为二阶跨站点脚本。(在这种情况下," XSS"为 确实是一个错误的称呼,因为攻击没有跨站点元素。 [强调我的] 但是,名称被广泛使用,因此我们将在此处保留。(

在第二阶XSS中,攻击者仍在注射的恶意代码(大概(仍然是指向外部服务器的任意脚本(例如,将img标记注入"http://www.malicioussite.dom" + document.cookie的SRC属性(。我感到困惑为什么作者当时说这次攻击没有跨站点元素。在我看来,向恶意外部服务器提出请求就像是一个适当的跨站点元素。我想念什么吗?

对我来说,XSS中的'跨站点'意味着恶意脚本本身直接从另一个站点发送。例如,如果在URL参数上反映XSS的情况下,恶意网站A.com可以在b.com上链接到b.com的链接,其攻击在B的脆弱参数中,当用户访问A并单击链接时,他将在b。

上执行脚本

所以我认为这不是恶意脚本在做什么,而是它来自(以及如何(。

在存储的XSS的情况下,该脚本通常直接在脆弱网站上输入,但是可能并非总是如此,因此可以维护原始的"跨站点"元素。但这没关系,名称是相同的,因为基本问题和代码中的解决方案都是相同的,因此漏洞的名称也相同。:(

无论人们称之为什么,重要的是要避免它。:(

最新更新