自20世纪90年代中期诞生以来,跨站脚本攻击(cross-site scripting,又称XSS攻击)逐步成为Web攻击方式中一种重要形式,位列2017 OWASP TOP10第七的位置。
XSS攻击主要包括有三种类型:反射型XSS攻击、存储型XSS攻击和DOM型XSS攻击。
①反射型XSS攻击。又称非持久型XSS攻击、参数型XSS攻击,其基本原理就是将攻击者的输入数据“反射”给浏览器。攻击者首先找到存在反射型XSS攻击漏洞的Web应用程序,然后将恶意脚本附加到该Web应用程序的URL地址参数中,并生成一个链接,最后通过特定手法(如邮件方式、聊天工具等)引诱用户点击恶意链接,这样恶意脚本就会在用户的浏览器上执行,引发XSS攻击。
②存储型XSS攻击。又称持久型XSS攻击,其基本原理就是攻击者事先将恶意脚本保存在Web服务器端,当用户浏览这些包含恶意脚本的Web页面时,引发XSS攻击。
③DOM型XSS攻击。攻击浏览器端的DOM对象,其基本原理就是攻击者在浏览器端输入恶意脚本,通过执行这些恶意脚本改变DOM中一些对象的值。攻击者首先找到客户端脚本中的漏洞,然后构造包含恶意脚本的URL链接,最后通过特定手法(如邮件方式、聊天工具等)引诱用户点击恶意链接,这样恶意脚本就会在用户的浏览器上执行,引发XSS攻击。
XSS攻击诞生之初,大家认为其危害不大,重视不够,随着Web技术的发展,其攻击威力逐步显现出来。XSS攻击的主要危害有:信息获取、会话劫持、网络钓鱼、网页挂马、XSS蠕虫等。
①信息获取。通过执行恶意脚本,可以获取浏览器端的信息,包括Cookie信息、访问历史、客户端IP地址、开放端口信息、剪贴板内容、监听键盘信息、用户账号信息等。
②会话劫持。通过XSS攻击可以获取浏览器端和Web服务器进行会话时的会话标识,从而可以冒充合法用户进行一些操作,如跨站请求伪造攻击。
③网络钓鱼。XSS攻击方式丰富了网络钓鱼的手段,如XSS重定向钓鱼、HTML注入式钓鱼、XSS跨框架钓鱼等。
④网页挂马。通过XSS攻击可以利用JavaScript脚本实施网页挂马。
⑤XSS蠕虫。通过XSS攻击将一段恶意脚本保存在Web服务器上,其他用户浏览包含该恶意脚本的Web网页时,这些恶意脚本会执行并将被自动保存到用户的相关信息(如用户个人介绍等)中,这个过程称为用户中毒。所有浏览中毒用户信息(如个人介绍信息等)的其他用户也一样会中毒。