成因
会提交有害参数,作用是把一些跳转,js等代码放进页面中执行,一般参数都会先闭合一些标签,然后加入有害的代码,比如下面的参数:back_text=%22%27%3E%3C/title%3E%3Cimg%09src=javascript:alert%28/XSS/%29%3E
,这个其实是 "'></title><img src=javascript:alert(/XSS/)>
这个的编码形式,先闭合一个标签,目的是让恶意JS能够顺利执行。
危害
Xss主要就是用提交的参数可以操控到网页中的的返回,闭合一些标签或者添加一些标签,可以实现定时跳转,提交cookie,下载木马等一系列操作,可以说只要js可以做到,xss就可以做到,属于高危的一种漏洞。
修复
一般来说就是针对特殊字符进行过滤或者转义。XSS特殊字符一般是这些: “;!–<>=&#{()}`/**/\@,只要把这些东西都编码或者过滤了,基本可以在第一步就扼杀xss了。
TIPS
XSS的过滤或者转义一般发生在出去的过程而不是提交的过程。
案例: 新浪微博蠕虫事件
2011年6月30日晚,外部黑客利用新浪微博的XSS漏洞实施了XSS蠕虫攻击。具体表现为当一个用户点击了微博上的短URL后,他将在不知情的情况下发布微博和给粉丝发私信(诱骗其他用户访问恶意URL,影响更多用户),并收听一个黑客指定的帐号:
仅几个小时,6.9万余个新浪微博用户感染该蠕虫,恶意网址链接转发40余万次。
引发该XSS蠕虫的漏洞是weibo.com上的一个普通XSS漏洞,黑客利用该漏洞引入了2kt.cn的恶意JS脚本(如下图所示),并通过短网址转换将恶意URL变成了看似正常的网址(t.cn/aNvKqn),当用户访问这个短URL的时候就会触发恶意脚本执行。恶意脚本t.js以当前用户身份进行了发广播、发私信、收听的操作。
通常蠕虫需要两个必要条件:1. 可以执行恶意操作;2. 可以感染并传播。这往往与业务特性密切相关,微博业务就有很强的传播性。另外,并不是只有跨站才能形成蠕虫,单单一个CSRF漏洞也可以形成蠕虫。