文章目录

  • 前言
  • 一、关于CORS跨域问题的理解
    • (1)CVE-2012-0053
    • (2)Phpinfo页面
    • (3)Flash/java
  • 二、cors跨域漏洞和同源策略的关系
  • 三、漏洞靶场演示
  • 四、漏洞防御方法
  • 总结

前言

我终于回来了,最近太忙了。实习真的是累啊,这篇文章真的是鸽了很久很久,半个月前就已经起了稿,因为工作的原因,经常渗透搞攻防,熬夜冠军。趁着这个美好又充满活力的周六,把之前学习的CORS漏洞写一写。


提示:以下是本篇文章正文内容,下面案例可供参考

一、关于CORS跨域问题的理解

在讲这个漏洞之前,先简单说一下起因。前段时间面试中被问到:xss如何绕过http only的限制获得cookie?后来自己查阅资料,发现有几种方法,这里简单归纳下:

(1)CVE-2012-0053

Apache服务器2.0-2.2版本存在个漏洞 CE-2012-0053:攻击者可通过向网站植人超大的Cookie,令其HTTP头超过Apache的LititRequestFieldSize (最大请求长度,4192字节),使得Apache返回400错误,状态页中包含了HttpOnly 保护的Cookie。

(2)Phpinfo页面

无论是否设置了HttpOnly 属性,phpinfoO) 函数都会输出当前请求上下文的Cookie信息。如果目标网站存在PHPINFO页面,就可以通过XMLHttpRequest请求该页面获取Cookie信息。

(3)Flash/java

安全团队seckb在2012年提出,通过Flash、Java 的一些API可以获取到HttpOnly Cookie,这种情况可以归结为客户端的信息泄露
还有一种就是这个CORS跨域漏洞。

二、cors跨域漏洞和同源策略的关系

漏洞全称 跨域资源共享(Cross-origin resource sharing)。它是同源策略的扩展,使得不同源网站之间资源的访问更加灵活。

同源策略规定:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。同源的意思即为两个站点需要满足同协议,同域名,同端口这三个条件。

因此,假如网站的CORS策略配置不当,它就有可能带来基于跨域的攻击。
所以归根结底,这还是一个配置不当引发的安全问题。

三、漏洞靶场演示

为了方便演示cors漏洞,我找到一个专门针对这个漏洞的靶场,DoraBox。

下载地址:
https://codeload.github.com/gh0stkey/DoraBox/zip/master.

具体安装步骤请参考百度,回归正题:
               图1. DoraBox
访问http://127.0.0.1/dorabox/csrf/userinfo.php,页面会显示当前用户的信息,如下图:
              图2. userinfo.php

用BurpSuite抓包分析一下请求包(Request)和响应包(Response):
              图3 .Request请求头
              图4.Response响应头

响应包里有两个很关键的字段:Access-Control-Allow-OriginAccess-Control-Allow-Credentials
Access-Control-Allow-Origin字段是必须的,他的值可能是请求时Origin字段的值,也可能是一个*,表示接受任意域名请求。

一、如果Origin指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应,浏览器收到这个回应发现这个回应的头信息没有包含Access-Control-Allow-Origin字段,就知道错了,从而会抛出一个错误,被XMLHttpRequest的onerror回调函数捕获。注意这种错误无法通过状态码识别,此时HTTP回应的状态码可能是200。

二、如果Origin指定的域名在许可范围内,服务器返回的响应会多出几个头信息字段,就类似于图4。

Access-Control-Allow-Origin:这个字段是请求时Origin字段的值,也有时候是 * ,也就是接收任意域名的请求,这个是危险的。
Access-Control-Allow-Headers:这个字段是一个逗号分割的字符串,表明服务器支持的所有头信息字段。
Access-Control-Allow-Credentials:值类型是布尔型,表示是否允许发送Cookie。默认情况下Cookie不包括在CORS请求中。当设为true时表示服务器明确许可,Cookie可以包含在请求中一起发送给服务器。

(Tips:需要注意的是,下面两者组合的情况是默认不存在的,当Access-Control-Allow-Credentials属性设置为true时,即需要发送Cookie那么在服务器中Access-Control-Allow-Origin就不能设置成*,必须指定明确的与请求一致的域名,同时,Cookie依然遵循同源政策。
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

总而言之,CORS机制已经默认自动禁止了这种组合。)

挖掘CORS漏洞的思路就是,可以测试下带有Access-Control-Allow-Origin: * 字段的网站是否有CORS漏洞,用BurpSuite就行。

四、漏洞防御方法

不要配置"Access-Control-Allow-Origin" 为通配符 * ,而且更为重要的是,要严格效验来自请求数据包中的“Origin”的值。当收到跨域请求的时候,要检查“Origin” 的值是否是一个可信的源,还要检查是否为null。
避免使用 “Access-Control-Allow-Credentials :true”(请求中带cookie)
减少"Access-Control-Allow-Methods"所允许的方法。

总结

提示:这里对文章进行总结:

CORS,跨域资源共享(Cross-origin resource sharing),是H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,就出现了跨域的现象。

我也是靠着这个漏洞,加上一些七七八八的,成功拿到了漏洞盒子vulbox的漏洞证书(太好看了,有中文也有英语版本):
首先第一点,这个漏洞好挖,cors漏洞我个人理解为是一个配置设置不当所导致的安全问题,也是owasp top 10中的漏洞之一。
希望大家能清楚明白,盒子的证书虽然好看,但是实际作用不大!!!
想要这个证书的也可以私信我,我会教你方法。

因为个人感觉没什么技术含量在里面,所以特别好拿,仅仅是好看而已,真正体现挖洞技术的还是推荐CNVD原创漏洞证书。

在网络安全这个圈子待很久了,认识了很多厉害的好友,我以为我能学到很多技术,可我学来学去他们只教了我一句话,有手就行。

CORS跨域资源共享漏洞靶场演示相关推荐

  1. CORS跨域资源共享漏洞

    目录 同源策略 解决跨域问题的方案 CORS CORS原理 CORS漏洞攻击流程 CORS漏洞案例演示 CORS漏洞挖掘思考 漏洞危害 漏洞修复 跨域资源共享 (CORS) 是一种浏览器机制,可以对位 ...

  2. cors跨域资源共享】同源策略和jsonp

    在执行下面那段代码的时候,我遇到了一个跨域资源共享的问题 <!doctype html> <html> <head> <meta charset=" ...

  3. CORS跨域资源共享(二):详解Spring MVC对CORS支持的相关类和API【享学Spring MVC】

    每篇一句 重构一时爽,一直重构一直爽.但出了问题火葬场 前言 上篇文章通过我模拟的跨域请求实例和结果分析,相信小伙伴们都已经80%的掌握了CORS到底是怎么一回事以及如何使用它.由于Java语言中的w ...

  4. Python 使用CORS跨域资源共享解决flask服务器跨域问题、浏览器同源策略

    CORS 全称 Cross-origin resource sharing(跨域资源共享),只要服务端配置了 CORS,前端调用时就可以实现跨域访问了. 形式就是封装在 header 里的一些参数,例 ...

  5. tomcat7.0配置CORS(跨域资源共享)

    平时我们做前台页面时可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...

  6. php跨域资源共享,CORS 跨域资源共享

    CORS (Cross-Origin Resource Sharing) 跨域资源共享 为什么需要 CORS 首先,跨域指的是同一个域名下的资源,同时要注意域名与子域名,比如 developers.e ...

  7. javascript --- XMLHttp2级、CORS(跨域资源共享)

    FormData: // 为序列化表单以及创建与表单格式相同的数据提供了便利 var data = new FromData(); data.append("name", &quo ...

  8. Spring Boot CORS跨域资源共享实现方案

    同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能 同源策略限制cookie 等信息的跨源网页读取,可以保护本地用户信息 同源策略限制跨域 aja ...

  9. CORS跨域资源共享 1

    1. 接口的跨域问题 (1)编写的 GET 和 POST 接口,存在一个很严重的问题:不支持跨域请求. 解决接口跨域问题的方案主要有两种: ① CORS(主流的解决方案, 推荐使用 ) ② JSONP ...

最新文章

  1. 祝贺黑龙江馆正式入驻波特城暨龙商龙企龙品走向全球化启动仪式圆满成功
  2. OpenCV 自适应的直方图均衡化
  3. 域名恶意指向的问题解决
  4. flowable节点的自定义属性扩展_03
  5. XLNet(Generalized Autoregressive Pretraining for Language Understanding) 论文笔记
  6. SPSS26版本软件超详细安装指导+内附安装资源
  7. github 上适合java初学者跟的项目
  8. html 设置origin,background-origin属性怎么用
  9. PHP8.0正式版的编译安装与使用
  10. 解决@Override错误
  11. Graphics详解
  12. jQuery打字效果
  13. 当数学题加上了程序员思想
  14. matlab人脸重建,3D人脸重建: BFM结合表情模型
  15. acm竞赛可以用python吗_ACM竞赛到底有多大用处?有害还是有益?
  16. 电脑截屏怎么固定到屏幕 截图放在桌面上
  17. 上云,你需要了解的账号管理模型
  18. 深入剖析Kubernetes--第五章:声明式API与Kubernetes编程范式
  19. 如何检查DirectX的版本(用于Windows Phone Developer Tools的安装检查)
  20. 如何参与Github开源社区开发

热门文章

  1. vscode加载web 视图,报错:“Error: Could not register serviceworkers: InvalidstateError: Failed to regist“
  2. win8计算机无法睡眠,win8系统电脑无法自动睡眠的图文办法win8.1无法自动休眠的解决办法...
  3. 悬镜安全与东方通达成战略合作,共筑国产软件供应链安全可信生态
  4. m3u8 文件格式详解
  5. 关于 谷歌浏览器主页被劫持的 解决方法
  6. 实际风控工作中的五大挑战!
  7. 安全防御 --- DDOS攻击(01)
  8. 安卓系统微信可以修改提示音了,操作简单又实用
  9. easyexcel分页导出多个excel
  10. Office提示您的许可证不是正版弹框解决办法