白帽子讲Web安全 第三章 跨站脚本攻击(XSS)

XSS—-Cross Site Script; XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。   1、XSS根据效果划分三类: 1)反射型XSS(非持久型XSS):简单的把用户输入的数据“反射”给浏览器。黑客往往需要诱导用户点击一个恶意链接,才能攻击成功。 2)存储型XSS(持久型XSS):存储型会把用户输入的数据存储在服务器端。这种具有很强的稳定性。 3)DOM Based XSS:通过修改页面的DOM形成的XSS。   2、XSS攻击 XSS Payload—用以完成各种具体功能的恶意脚本。     1) 最常见:通过读取浏览器的Cookie对象,发起“Cookie”劫持攻击。     2)通过模拟GETPOST请求操作用户的浏览器。     3)XSS钓鱼      eg:模拟登陆框获取用户名,密码。     4)识别用户浏览器      alter(navigator.userAgent);     5)识别用户安装的软件           eg:在IE 中可以通过判断ActiveX控件的classid是否存在,来推测用户是否安装了该软件。           try{                var obj=new ActiveXObject(‘XunLeiBHO.ThunderIEHelper’);           }catch(e){                //异常就不存在           }     6)获取用户真实的IP地址           eg:在XSS攻击框架“Attack API”中就有获取本地IP地址的API。                   3、XSS攻击平台      Attack API      BeEF      XSS-Proxy   4、XSS Worm (XSS蠕虫)      Samy Worm         5、调试JavaScript      Firebug      Fiddler      HttpWatch   6、XSS 构造技巧      1)利用字符编码:      2)绕过长度限制           eg:利用onclick事件加载XSS Payload                  location.hash—– 用于标识位置,一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)。                    利用注释      3)使用<base>标签           <base>—-定义页面上的所有使用“相对路径”标签的hosting地址。可以放置页面的任意地方,作用于位于它后面的所有标签           eg:           <base href=”http://www.baidu.com”/>           <script src=”x.js”></script>         4)window.name— 可设置或返回存放窗口的名称的一个字符串。可跨域、跨页面传递数据。   7、XSS 防御      1)HttpOnly:浏览器禁止页面的javaScript访问带有HttpOnly属性的cookie——————可以防止cookie劫持      2)输入检查:服务器端要过滤特殊、敏感字符。      3)输出检查:使用编码或转义      eg:HtmlEncodeJavascriptEncode             在Protocal与host中使用严格的URLEncode      4)处理富文本           过滤富文本时,事件应严格禁止           使用白名单禁止一些危险标签,只保留比较安全的标签存在           使用白名单过滤属性、事件           尽可能禁止用户自定义CSS style      5)防御DOM Based XSS           在“$var”输出到<script>时,应该执行一次javascriptEncode;           在document.write输出到HTML页面时,要分具体情况:如果输出到方法或者脚本里,则需要在做一次javascriptEncode,如果输出到HTML页面或属性,则要做一次HtmlEncode。           javaScript到HTML:           document.write();           document.writeln();           xxx.innerHTML();           xxx.outerHTML();           innerHTML.replace;           document.attachEvent();           window.attachEvent();           document.location.replace();           document.location.assign();           javaScript的输出:           页面中的所有的inputs框;           window.location(hrefhash等)           window.name           document.referrer( 返回载入当前文档的来源文档的URL。 )           document.cookie           localstorage           XMLHttpRequest返回的数据

转载于:https://www.cnblogs.com/qingchun-com/p/5998450.html

相关资源:富头像上传编辑器v1.4_fullavatareditor-其它代码类资源-CSDN文库

来源:weixin_30419799

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年9月22日
下一篇 2016年9月23日

相关推荐