根据效果不同可分为三类:
-
反射型XSS
-
存储型XSS
-
DOM XSS
一.反射型XSS
反射型XSS只是简单地把用户输入的数据‘反射‘给浏览器,往往需要诱导用户“点击”一个恶意链接才能攻击成功,也叫非持久性XSS
二.存储型XSS
存储型XSS会把用户输入的数据“存储”在服务端,具有很强的稳定性,存储时间比较长,持久性XSS
三.DOM XSS
从效果上看也是反射型XSS,单独划分出来,是因为DOM形成的原因比较特别,通过改变html代码进行注入,比如,闭合标签,添加带恶意javascript标签代码
四.XSS Payload
攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器,这些具有特点功能的恶意脚本,叫做xss payload;实际上是JavaScript脚本(flash或其他富客户端的脚本)
-
构造GET或POST包
-
XMLHttpRequest请求
-
合理运用图片链接
-
通过获得navigator.userAgent对象了解用户的操作系统,浏览器,但不一定准确,因为可以修改。
-
识别用户安装的软件,通过判断ActiveX控件的classid是否存在,来推测用户是否安装了软件,通过收集常见软件的classid,就可以扫描出用户电脑中安装的软件列表。
-
浏览器的插件也可以被XSS Payload 扫描出来,放在一个DOM对象中,可通过plugin对象找出来
-
还可以获取到客户端IP地址,如果客户端装了java环境,XSS可以通过调用Java Applet接口来获取本地IP地址
五.XSS攻击平台
-
Attack API
-
BeEF
-
XSS-Proxy
六.XSS Worm
存储型的XSS容易发起XSS Worm攻击,用户留言,发送站
七.XSS构造技巧
1.利用字符编码
2.绕过长度限制
产生xss的地方会有变量的长度限制,可能是服务端逻辑造成的。
最常用藏代码的地方,location.hash
3.<base>
标签
作用:定义页面上的所有“相对路径”标签的hosting地址,可以出现在页面的任何地方,并作用与位于该标签之后的所有标签,如果插入了<base>
标签,可以通过在远程服务器上伪造图片,链接,或脚本,劫持当前页面中所有的使用的相对路径