XSS分为三类:Stored XSS、Reflected XSS、Dom-Base XSS
(1)Stored XSS,即存储式跨站攻击,存储式跨站攻击简单来说就是攻击者提交给网站的数据会提交并永久保存到服务器的数据库或者是文件系统等其他地方,之后不做任何编码操作就会显示在web页面上。这是最厉害的攻击方式。这种攻击方式影响比较大,影响的用户范围广
例如1:在一个网站的一些留言板或者新闻等可以输入的地方,输入一下代码:
<script>alert(document.cookie)</script> 或者其他功能更强大的js
- 1
因为这个是留言板上或者评论等的内容,会被读取并且存储到服务器上,如果不作任何处理,当其他用户访问这个网页的时候,就会弹出一个关于cookie的警告信息。
例如2:在评论的时候输入<script type="text/javascript">alert("you are a foolish person")</script>
,如果不进行处理,这个信息会被当做正常的留言存储到服务器,那个接下来每个访问这个页面的用户都会收到you are a foolish person的alert信息,会造成很大的影响。(可用于窃取密码,用户信息等)
(2)Reflected XSS,即反射跨站脚本攻击,这是最常见的攻击方式。所谓反射,就是等着服务器所给的返回。我们在进行测试时依据的就是在自己页面上的简单注入。在web客户端提交了数据后,服务端马上给这个请求生成返回结果页,如果结果中包含了未验证的客户端输入数据,那就表示会允许客户端脚本直接注入到页面里,也就出现了这样一个漏洞。简单举个例子,在搜索引擎里边,我们如果搜索了一个包含html代码的字符串,如果返回的字符串仍然没被编码,那么搜索的内容就不是整个html代码了,而是只想过这个html代码,那就是存在XSS漏洞了。
(3)Dom-Base XSS,即基于DOM的XSS攻击,它是修改页面DOM节点数据信息而形成的XSS跨站脚本攻击,该漏洞多见于客户端脚本,意思就是如果一个js访问需要参数的url,并且需要把信息作用于自己当前的页面,信息又未被编码,就会出现该漏洞。
例如:好多网站在网址后边带个参数(?XXX的),当看到这种情况时候,我们可以在参数后边加个,如果加了这个参数之后,这段script代码不被编码就输出,那就证明它具有这么一个漏洞。 在某个参数中输入以下内容:
><script>alert(document.cookie)</script>
=’><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
<script>alert(’XSS’)</script>
"onfocus="alert(document.cookie)
<imgsrc=/uploadfile/
2015
/
0301
/
20150301105236644
.png” nerror=”alert(’XSS’)”>
<divstyle=”height:expression_r(alert(’XSS’),
1
)” />(这个仅限 IE 有效)
对于自身的网站最好可以借助一下工具:http://www.freebuf.com/sectool/43194.html
快速、直接的XSS漏洞检测爬虫 – XSScrapy
XSScrapy的XSS漏洞攻击测试向量将会覆盖
Http头中的Referer字段 User-Agent字段 Cookie 表单(包括隐藏表单) URL参数 RUL末尾,如 www.example.com/<script>alert(1)</script> 跳转型XSS http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html