Day54 跨域CORS资源JSONP回调域名接管劫持
前言:
#知识点:
1、子域名接管-检测&探针&利用
2、COSP跨域资源-检测&探针&利用
3、JSONP跨域回调-检测&探针&利用
#前置知识点:
-同源策略(SOP)-“同源”包括三个条件:同协议 同域名 同端口
同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的关键的安全机制.简单说就是浏览器的一种安全策略。
虽然同源策略在安全方面起到了很好的防护作用,但也在一定程度上限制了一些前端功能的实现,所以就有了许多跨域的手段。
-子域名接管:
域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分发、网络钓鱼/鱼叉式网络钓鱼、XSS 、身份验证绕过等。子域名接管不仅仅限于CNAME记录,NS,MX甚至A记录也会受到影响。
检测项目:
https://github.com/pwnesia/dnstake
https://github.com/anshumanbh/tko-subs
https://github.com/mhmdiaa/second-order
https://github.com/r3curs1v3-pr0xy/sub404
https://github.com/Echocipher/Subdomain-Takeover
CORS跨域资源
CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,跨域资源共享(CORS)是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,以使不同的网站可以跨域获取数据。(解决同源策略限制太厉害,而又有业务需求要请求外部资源的情况)。
Access-Control-Allow-Origin:指定哪些域可以访问域资源。例如,如果requester.com想要访问provider.com的资源,那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限。
Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie。仅当allow-credentials标头设置为true时,才会发送Cookie。
Access-Control-Allow-Methods:指定可以使用哪些HTTP请求方法(GET,PUT,DELETE等)来访问资源。此标头允许开发人员通过在requester.com请求访问provider.com的资源时,指定哪些方法有效来进一步增强安全性。
检测项目:https://github.com/chenjj/CORScanner
关键在于Access-Control-Alow-Origin:* 表示其他页面能获取此页面的资源
例子:
登录xiaodi8.com后台
然后
//请求www.xiaodi8.com/zb_system/admin/index.php 源码
CORS 而在同源策略下,只能进行一个资源共享。不能执行添加用户等操作。
用户A在登录状态下,去访问第三页面。
第三方页面就会去请求这个后台的页面和内容,相对于A访问了页面,即将页面的内容自己泄露出去了。
CSRF 有同源策略就会失败,但是能添加用户等操作
第三方页面就会去请求这个后台的页面和内容,相对于A访问了页面,即将页面的内容自己泄露出去了。
如何判断是否存在CORS呢?
- Origin:表示次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。
主要看这个参数是不是写死了。
-JSONP跨域回调
支付接口:
调用支付宝官方接口来判断是否支付成功
自己的网站域名是支付宝官方的域名吗?不是 属于不同源 不符合同源策略
除了支付接口 比如登录接口 等。
用户A浏览器访问过huya youtube taobao jd这种页面
攻击者:尝试去测试这些官方的回调页面(解决同源策略的安全问题).将回调页面的URL 记录下来,然后再自己搭建的网站上面去触发代码,只要用户A访问了页面,那就相当于用户A触发了回调代码,就会回显敏感信息给攻击者。解决了同源策略的问题。
JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输。
检测项目:手工审查元素筛选或Burp项目
F12查看 关键词:callback
https://github.com/p1g3/JSONP-Hunter
#JSONP回调跨域-某牙个人信息泄露
复现步骤:
1、登录某牙找到回调有敏感信息
2、本地搭建访问页面跨域调用URL
3、访问本地页面可获取当前某牙信息
#子域名接管-瓜迪个人子域名劫持接管
复现步骤::xiaodi8.com
1、通过检测cname获取指向
2、发现testxiaodi.fun过期受控
3、注册testxiaodi.fun实现控制
#检测项目-CORS&JSONP&子域名接管
1、python cors_scan.py -i top_100_domains.txt -t 100
2、人工排查+burpsuite 安装Jsonp_Hunter.py抓包使用
3、dnsub爬取子域名筛选接管