Web攻防第五十四天

WEB攻防-通用漏洞&跨域CORS资源&JSONP回调&域名接管劫持

目录

WEB攻防-通用漏洞&跨域CORS资源&JSONP回调&域名接管劫持

#知识点:

#前置知识点:

COSP跨域资源

CSRF和CORS的区别

案例:CORS资源跨域-敏感页面源码获取

JSONP跨域回调

JSONP回调跨域-某牙个人信息泄露

子域名接管

子域名接管-瓜迪个人子域名劫持接管

检测项目-CORS&JSONP&子域名接管


#知识点:

1、子域名接管-检测&探针&利用

2、COSP跨域资源-检测&探针&利用

3、JSONP跨域回调-检测&探针&利用

#前置知识点:

-同源策略(SOP)-“同源”包括三个条件:同协议 同域名 同端口

同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的关键的安全机制.简单说就是浏览器的一种安全策略。

虽然同源策略在安全方面起到了很好的防护作用,但也在一定程度上限制了一些前端功能的实现,所以就有了许多跨域的手段。

同源策略限制的太厉害,但是网站需要去调用外部资源,所以就有了这个cors

COSP跨域资源

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

CSRF和CORS的区别

csrf在有同源检测的时候就会失败,而cors不会。csrf是利用这个数据包完成一些操作。当用户点击这个带有csrf的链接后触发的数据包,这个数据包可以干什么,那么就代表csrf能干啥,比如添加用户、删除用户等。但cors不能,它只能获取网站的资源,比如图片、源码之类的。

对于这个cors,如果说这个Access-Control-Allow-Origin:http:后面写的*,那么这里可能就有cors漏洞。如果是固定了一个地址的话,比如www.xiaodi8.com,那么他就只能从这个地址来获取资源。相当于说如果这里写死的话,那么这里基本就没cors漏洞了。

案例:CORS资源跨域-敏感页面源码获取

复现步骤:

1、本地搭建访问页面跨域调用URL

2、受害者访问当前页面被资源共享

首先网站管理者登录着自己的后台,这里使用本地搭建的zblog做演示。

当他去点击了存在攻击者的链接就会触发CORS,链接这里是用cors.html这个来模拟真实环境,下面代码的意思就是当你点击这个cors.html之后就会去请求http://localhost/Zblog/zb_system/admin/index.php这个地址,然后因为这是网站后台是登录状态可以直接访问,那么就会把里面的内容以变量z0发到http://localhost:80/cors1.php

而这个cors1.php就会接收这个变量z0的数据写入到1.html里面,那么就完成了CORS。其实这个步骤和CSRF是一样的,但是这里就是因为同源策略所以CSRF失效了,就可以用CORS来进行攻击。两个产生原理不同,得到的结果也不同,CORS是资源共享,所以可以解决跨域问题。CSRF是什么操作都可以,只要触发的这个链接能做啥事,他就能做什么操作。

这是我们点开这个1.html,就可以看到网站的内容,这里用url编码的,但问题不大,修改一下编码即可。

那么在白盒代码审计的情况下就是看设置问题了,就是看origin设置的是不是*,是星号,那么就有这个漏洞。而黑盒就是看origin设置后能通过资源。上面说过这个origin这个值在请求头中,那我们是不是可以抓包修改。

JSONP跨域回调

JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输。

检测项目:手工审查元素筛选或Burp项目

https://github.com/p1g3/JSONP-Hunter

这个jsonp跨域回调就是说网站因为有第三方接口,比如支付接口,客户在第三方接口支付完之后,第三方接口就会给网站发送个回调,网站就会通过这个回调来确认客户已经支付成功了。而在这个回调中有一些敏感信息,所以如果说目标在登录网站的同时点开了攻击者给的链接,那么这个链接就会去接受登录网站的回调,从而得到一些敏感信息。而这个回调的传输格式为json,所以就成为jsonp跨域回调

一般大型的网站都会有这个同源策略,这是为了安全着想。但是业务需求不得不调用第三方接口。利用这个就可以绕过同源策略,同时得到用户的敏感信息。

利用这个JSONP只能得到用户的敏感信息,而利用CORS只能得到网站资源。这两个就是绕过同源策略的一些攻击手段。

JSONP回调跨域-某牙个人信息泄露

复现步骤:

1、登录某牙找到回调有敏感信息

2、本地搭建访问页面跨域调用URL

3、访问本地页面可获取当前某牙信息

当用户点击这个html之后就会被攻击者得到回调

而这个和csrf的区别就是一般大型网站都会检测同源策略,所以你只能用这个回调去获取一些信息。而找这个漏洞就是看你能不能找到这个回调,回调里面有没有敏感信息。如果有那么这里就有安全问题。可以直接在数据包那里搜callback来查看回调

子域名接管

域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分发、网络钓鱼/鱼叉式网络钓鱼、XSS 、身份验证绕过等。子域名接管不仅仅限于CNAME记录,NS,MX甚至A记录也会受到影响。

设定域名的指向的时候一般都是a记录,但也有cname,也就是别名。如果说把test.baidu.com设置个别名为test.xxxxx.com的话,如果这个test.xxxxx.com域名过期或则失效了,那我们就可以注册这个域名,那么这个域名归自己所有,然后把这个域名指向的网站为自己的,就可以实现对test.baidu.com的控制。

可能你有点不理解,再说明一下,如果test.xxxxx.com失效或则过期,你访问test.baidu.com是显示啥也没有,也就是说test.xxxxx.com我们一旦注册,别人访问test.baidu.com就会指向到我这里来,那么我想让它显示什么,他就会显示什么。

子域名接管-瓜迪个人子域名劫持接管

复现步骤::xiaodi8.com

1、通过检测cname获取指向

2、发现testxiaodi.fun过期受控

3、注册testxiaodi.fun实现控制

test.xiaodi8.com设置的别名为test.xiaodi.fun。那么我们访问test.xiaodi.fun就是相当于访问test.xiaodi8.com,如果这个test.xiaodi.fun过期了,我们便可以自己注册然后实现控制。

检测项目-CORS&JSONP&子域名接管

1、python cors_scan.py -i top_100_domains.txt -t 100

这个工具可以用来检测CORS。名字叫CORScanner

直接在在当前目录打开cmd。输入命令“python cors_scan.py -i top_100_domains.txt -t 100”

但是这里会报错,因为这个工具需要几个py的第三方库,直接去py的目录下打开cmd输入pip3 install gevent (当前pip版本为3,所以是pip3,具体看自己的pip版本)

总之缺哪个模块就下载哪个。

然后输入命令:“python cors_scan.py -i top_100_domains.txt -t 100”即可进行这些url的扫描,这个命令就是扫描top_100_domains.txt这个文本里面的地址。

如果箭头这个位置是已经规定好的地址的话,那这里就是定死的,我们没法去利用,如果说是星号或则一个我们能够利用的地址的话,那么这里就有CORS漏洞。

2、人工排查+burpsuite 安装Jsonp_Hunter.py抓包使用

人工排查就是自己抓包看回调信息。

利用burp就是安装这个插件,过程跟之前安装那个识别验证码的一样。安装完成之后右边就会有这个模块了,接下来我们直接抓包即可。

然后他就会把经过的流量中带回调给筛选出来

3、dnsub爬取子域名筛选接管

这个工具不仅可以爬取子域名还可以爬取别名,也就是cname,如果说xxioadi123.com这个域名过期或则失效了,那我们注册一个,直接就接管了bbs.xiaodi8.com。怎么看域名过期呢,可以直接去注册域名的地方,看这个域名的注册情况。比如去阿里云、腾讯云查。

下面的这些检测项目也可以,但是比较麻烦并且慢。

检测项目:

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

至此,web攻防就讲完了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaopeisec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值