• 一个跨域请求的XSS漏洞再续


        上回提到,由于需要使用代理页面解决POST请求的跨域请求,需要在代理页面上执行传递的函数。所以我们做了白名单只有我们认可的回调函数才能在页面上执行,防止执行非法的JS方法,做脚本攻击。

     

        我们所采用的方式是,把白名单以及过滤方法单独提出作为单独的文件引入页面,然后进行使用(这就为新的漏洞提供了机会)。 

     

        本次漏洞出现的原因有两个:

     

    • 屏蔽了白名单的JS文件
    • 当前页面如果检测不到这个方法就直接不过滤了(为什么这么处理呢?防止白名单失败之后,由于某些原因,导致某种请求失败,导致流程不通。真是因为这个原因,给漏洞提供了机会。) 

        如何轻松的控制这个白名单?该漏洞利用的是:浏览器的xss filter特性。当URL中检测到xss攻击时,浏览器会自动过滤页面上的这个JS内容。就是利用这个原理,禁用了页面的白名单过滤函数,加上没有限制,导致可以直接绕过过滤函数,在页面上执行了攻击代码。

     

        经查,浏览器为了防止XSS攻击,过滤了URL中存在的JS地址就行过滤。访问下面的地址:

    https://www.baidu.com/?xss=%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22https%3A%2F%2Fss1.bdstatic.com%2F5eN1bjq8AAUYm2zgoY3K%2Fr%2Fwww%2Fcache%2Fstatic%2Fprotocol%2Fhttps%2Fjquery%2Fjquery-1.10.2.min_f2fb5194.js%22%3E%3C%2Fscript%3E

       

      会发现这样的报错:

     The XSS Auditor refused to execute a script in 'https://www.baidu.com/?xss=%3Cscript%20type%3D%22text%2Fjavascript%22%20src…ocol%2Fhttps%2Fjquery%2Fjquery-1.10.2.min_f2fb5194.js%22%3E%3C%2Fscript%3E' because its source code was found within the request. The auditor was enabled as the server sent neither an 'X-XSS-Protection' nor 'Content-Security-Policy' header.

        导致页面无法加载jquery的JS,认为这个JS是一个XSS攻击。

     

        这里面查到http协议头里有这么一个字段可以控制是否开启浏览器的XSS过滤功能。那就是:X-XSS-Protection。 

     

        那什么是X-XSS-Protection呢?这个是为了防范XSS的。可以通过设置他的值来开启和关闭是否过滤XSS,当然最好是开启这个功能,这里讲到的就是为了了解和学习http协议中的这个字段。那应该怎么配置呢?  

    0 – 关闭对浏览器的xss防护  
    
    1 – 开启xss防护  
    
    1; mode=block – 开启xss防护并通知浏览器阻止而不是过滤用户注入的脚本。  
    
    1; report=http://site.com/report – 这个只有chrome和webkit内核的浏览器支持,这种模式告诉浏览器当发现疑似xss攻击的时候就将这部分数据post到指定地址。

       

      当开启XSS防护之后,浏览器会隐藏对反射性XSS的输出。

       

      在这里,我的解决方案有两个:

    • 将过滤方法放在页面内,不采用外联的形式;
    • 或者检测不到这个检测方法的时,直接阻止流程继续。 

        XSS的战斗不止。

     

     

    参考资料:

    https://www.imququ.com/post/web-security-and-response-header.html

    http://drops.wooyun.org/tips/1166

    http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx

    http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx

    https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx

    http://www.secpulse.com/archives/5688.html

     

     

  • 相关阅读:
    Android学习进程 Java引用 Rxjava MVP
    小试 Xcode 逆向:App 内存监控原理初探
    春招路上孤独的iOSer的心路历程(面经)
    【译】4个你需要知道的Asset Catalog的秘密
    超全!iOS 面试题汇总
    整理 iOS 9 适配中出现的坑(图文)
    旧版Xcode下载地址
    xcode 自动添加注释,生成文档
    NDK_ROOT找不到的解决方法 MACOS
    13个小技巧帮你征服Xcode
  • 原文地址:https://www.cnblogs.com/xiaoheimiaoer/p/4559092.html
Copyright © 2020-2023  润新知