跨站脚本漏洞概述
跨站脚本攻击,俗称xss,通常指利用网站漏洞从用户处获取隐私信息。跨站脚本攻击(Cross Site Scripting)缩写为CSS,但由于层叠样式表(Cascading Style Sheets, CSS)的缩写重复,为了避免混淆,现在大部分地区都称为XSS。
为了提高用户的体验,网站中会含有大量的动态内容,在浏览网页或使用实施通讯工具时,可能会有动态链接等频繁出现,根据用户所处环境或者需要,web程序可以输出相应内容。攻击者将恶意代码放入动态链接,用户读取后便能非法得到用户的隐私信息。此时动态站点会受到一种名为“跨站脚本攻击”的威胁,而静态站点则完全不受其影响。
XSS漏洞分类
XSS漏洞类型可以分为三类,按其危害程度排序由高到低分别为:存储型XSS,反射型XSS,DOM型XSS。
存储型XSS:也称其为持久型跨站,是最为直接的危害类型,其跨站代码存储于数据库中,常见于数据交互界面,如注册界面等。
反射型XSS:此类型也称为非持久型跨站,同时也是最为普遍的类型,用户访问服务器后,通过跨站连接返回跨站代码,一般是一次性使用,即用即得,常见于信息查询等可以获取大量信息的界面。
DOM型XSS:DOM意为文档对象模型,是客户端脚本逻辑有误导致的安全问题,类似于反射型XSS为一次性使用,漏洞一般直接存在于前端代码,不与后台服务器交互。
XSS的危害
1.XSS 蠕虫:XSS蠕虫基于社工的基础上,诱使用户点击访问其发出的恶意邀请链接(如之前在QQ上经常出现的音频连接,一旦打开,则无法关闭)。社交网络用户接收到好友发出的相关链接时,往往是不加分辨地直接点击访问。活跃节点会比非活跃节点收到更多的蠕虫邀请链接,一旦受到感染,也会发送更多的蠕虫邀请链接。
2.Cookie窃取:攻击者利用XSS在网页中插入恶意代码,一旦用户访问该网页,cookie就会自动地发送到攻击者服务器中去。使用cookie我们可以实现免密登陆,一旦得手,他们可以盗取用户账户,修改用户设置,污染cookie,做虚假广告等
3.钓鱼欺骗:利用目标网站的反射型XSS漏洞,将目前重定向到钓鱼网站,或在JavaScript中写入恶意钓鱼代码,用于监控网站的数据输入,从而获取信息
4.网页挂马:顾名思义,将木马下载到本地用户,并进一步执行,当木马获得执行后,会有更多的木马被下载,进入一个恶性循环,从而时用户电脑受到攻击或控制。常见的跨站脚本攻击会利用弹出恶意窗口的方式进行挂马攻击。
5.会话劫持:部分跨站脚本攻击可以劫持浏览器,查看用户的浏览历史以及发送或接收的数据,同时访问正常网站时被转向到恶意网页,一些无用的插件也会自动添加。
XSS漏洞防护技巧
1.不随意插入不可信数据
2.在向HTML中插入数据前,对HTML进行解码
3.在向HTML常见属性插入数据前,进行属性解码
4.在向HTML URL插入数据前,进行URL解码
5.加大验证力度,验证格式,范围以及内容