xss基础及漏洞原理

1.xss中浏览器工作机制及javascript内容

       捕获.JPG

        捕获1.JPG

2.xss漏洞原理

       捕获2.JPG

       捕获3.JPG

3.xss漏洞产生的条件及危害

       捕获4.JPG

         捕获5.JPG

4.xss漏洞的分类

        捕获6.JPG

         捕获9.JPG

         捕获10.JPG

    存储型xss的利用

          捕获7.JPG

         捕获22.JPG

         捕获23.JPG

         捕获11.JPG

           捕获8.JPG

5.xss漏洞的利用

       捕获12.JPG

    cookie的利用

        捕获13.JPG

         捕获14.JPG

         捕获15.JPG

         捕获16.JPG

     会话劫持

         捕获17.JPG

           捕获18.JPG

            捕获19.JPG

6.浏览器的同源策略     

    什么是同源策略

        两个页面地址中的协议、域名和端口号一致,则表示同源。

   例如该地址 https://www.google.com 和以下地址对比

                   地址                                    同源                原因

        http://www.google.com                     否            协议不一致

        https://google.com                             否           域名不一致

        https://www.google.com:81             否           端口号不一致

       https://www.google.com/a/s.html     是           协议,域名和端口号都一致

同源策略定义

         同源策略是浏览器最可信也最基础的安全功能,可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。浏览器的同源策略限制了来自不同源的document或者脚本对当前的document读取或设置某些属性。同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

        那么我们首先需要知道什么叫做同源。如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。可见影响到是否同源的因素有host(域名或ip,如果是ip则靠左一个根域名)、子域名、端口、协议。

同源策略的限制:

      1.存储在浏览器中的数据,如localStroage、Cooke和IndexedDB不能通过脚本跨域访问

      2.不能通过脚本操作不同域下的DOM

      3.不能通过ajax请求不同域的数据

      4.A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"协议相同 域名相同 端口相同

为什么要同源策略

      1.设置同源限制主要是为了安全,如果没有同源限制存在浏览器中的cookie等其他数据可以任意读取,不同域下DOM任意操作,Ajax任意请求的话如果浏览了恶意网站那么就会泄漏这些隐私数据。

      2.Cookie一般用来保存登录状态。在登录一个银行网站后此时浏览器中就保存了登录的状态,同时浏览了恶意网站,这时Cookie的信息没有同源限制的话恶意网站就可以获取这些Cookie信息来达到不为人知的目的。

      3.如果可以操作不同域下的DOM可以用如下方式完成盗取信息。在自己的网站上嵌入一个iframe地址设置成银行地址,然后让iframe全屏显示,当你一不小心上当了输入你账号密码,我就可以通过DOM操作获取到输入的信息。

      4.Ajax的限制同Cookie,如果带上Cookie去跨域访问接口就可以通过程序的验证被认为身份是合法的。

document.domain

      若两个文档的域相同则可以获取对方的DOM对象,并且可以通过设置 document.domain 的值来让两个文档的域保持一致,但是 document.domain 并不是可以设置任何值,只能设置为当前域的超域,比如:m.example.com 设置 为 example.com,并且不能 example.com 设置为 m.example.com 也不能将 m.example.com 设置为 example2.com。所以document.domain只可以在拥有相同的主域名的不同子域名之间跨域

window.name

      window.name有一个特性,即使当前窗口的地址改变了window.name的值也不会改变。可以利用这一特性来进行跨域,步骤如下:

        1.通过iframe加载需要获取数据的地址

        2.在加载的文件上将数据设置到window.name上

        3.数据获取完成后将iframe的地址设置为当前文档同域

        4.通过DOM操作拿到window.name上的数据

window.postMessage

     以上几种跨域的方法都属于破解行为,而postMessage是H5为跨域提供的解决方法。

otherWindow.postMessage(message, targetOrigin[, transfer])

messageEvent对象上的属性中有三个属性要注意,分别是:

  1. 1.source 发送消息的窗体

  2. 2.origin 发送消息的域名 (根据域名判断是否处理该消息)

  3. 3.data 发送消息的内容 (获取发送的消息内容)


           捕获20.JPG

           捕获21.JPG

            

猜你喜欢

转载自blog.51cto.com/13905896/2299588