赞
踩
一、XSS简介
跨站脚本攻击(Cross Site Script):本来缩写是CSS,为了和层叠样式表示(Cascading Style Sheet,CSS)有所区别,所以在安全领域叫做“XSS”。通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
①反射型XSS:简单地把用户输入的数据“反射”给浏览器。黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。也叫做“非持久型 XSS(Non-persistent XSS)”
②存储型XSS:把用户输入的数据“存储”在服务器端,有很强的稳定性。保留一个含有恶意JavaScript代码的网页在服务器端,所有访问者都会被执行恶意代码。
③DOM Based XSS:通过修改页面的DOM节点形成的XSS。(DOM:文件对象模型)
二、XSS攻击进阶
XSS Payload:XSS攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器,这些用以完成各种具体功能的恶意脚本,被称为“XSS Payload”。XSS Payload实际就是JavaScript脚本,所以任何JavaScript脚本能实现的功能,XSS Payload都能做到。
XSS Payload例子:一个最常见的XSS Payload就是通过读取浏览器的Cookie对象,从而发起“Cookie劫持”攻击,攻击者可以不通过密码,而直接登录进用户的账户。
高级的XSS Payload例子:①GET与POST请求:攻击者仅通过JavaScript就可以让浏览器发起这两种请求;②XSS钓鱼:通过钓鱼实现“与用户交互”获取用户关键信息;③识别用户浏览器:通过XSS读取浏览器的UserAgent 对象,或者分辨浏览器之间的差异;④识别用户安装的软件:通过判断ActiveX控件的classid是否存在,来推测用户是否安装了该软件;⑤CSS History Hack:通过CSS,来发现一个用户曾经访问过的网站,其原理是利用style的visited属性;⑥获取用户的真实IP地址:XSS通过调用Java Applet的接口获取客户端的本地IP地址。
XSS攻击平台:Attack API、XSS-Proxy。
XSS Worm:Samy Worm、百度空间蠕虫、MySpace蠕虫。一般来说,用户之间发生交互行为的页面,如果存在存储型XSS,则比较容易发起XSS Worm攻击。
JavaScript脚本调试工具:Firebug、IE 8 Developer Tools、Fiddler、Http Watch。
XSS构造技巧:利用字符编码、绕过长度限制(利用注释符)、使用<base>标签(<base>的作用是定义页面上的所有使用“相对路径”标签的hosting地址)、window.name的妙用(攻击者可以利用这个对象实现跨域、跨页面传递数据)。
三、XSS的防御
①针对XSS的cookie劫持:在set-cookie时为cookie标注“HttpOnly”标识;
②输入检查(XSS filter):同时在客户端JavaScript中和服务器端代码中实现相同的输入检查,客户端的检查是为了阻挡大部分误操作的正常用户,从而节约服务器资源;
③输出检查(安全编码):HtmlEncode、JavascriptEncode、UrlEncode、XMLEncode、JSONEncode;
④正确地防御XSS:XSS的本质还是一种”HTML注入“,用户的数据被当成了HTML代码一部分来执行;
⑤处理富文本:富文本指网站需要用户提交一些自定义的HTML代码;--- 如何区分富文本和有攻击性的XSS:对标签选择使用白名单,避免使用黑名单(白名单:只允许这些标签存在,其他的都不行;黑名单:不允许这些标签存在,其他的都行);使用开源的XSS filter项目(如Anti-Samy)。
⑥防御DOM Based XSS:分语境使用不同的编码函数。
思考:修补XSS漏洞时遇到的挑战之一是漏洞数量太多,因此开发者可能来不及,也不愿意修补这些漏洞,从业务风险的角度来重新定位每个XSS漏洞,具有重要的意义。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。