当前位置:   article > 正文

《白帽子讲web安全》第3章 跨站脚本攻击(XSS)_《白帽子讲web安全》第三章内容总结

《白帽子讲web安全》第三章内容总结

一、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漏洞,具有重要的意义。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/525098
推荐阅读
相关标签
  

闽ICP备14008679号