SEC-2022版-0041-WEB攻防-32-通用漏洞之跨域CORS资源&JSONP回调&域名接管劫持
部分属于设计上的理念问题,不属于漏洞范畴。
前置知识点
如何产生–发现–利用
同源策略(SOP)
- “同源”包括三个条件:同协议 、 同域名 、 同端口
- 同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的关键的安全机制.简单说就是 浏览器 的一种 安全策略 。
- 虽然同源策略在安全方面起到了很好的防护作用,但也在一定程度上 限制了 一些 前端 功能的实现,所以就有了许多 跨域的手段 。
# 不同源:
1.http&https
http://www.sywsec.com
httpas://www.sywsec.com
2.子域名
http://www.sywsec.com
http://www.sywxxx.com
3.端口
http://www.sywsec.com
http://www.sywsec.com:33
属于同源
http://www.sywsec.com/sywsec
检测的是数据包的来源子域名接管:
域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分发、网络钓鱼/鱼叉式网络钓鱼、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
COSP 跨域资源
CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,跨域资源共享(CORS)是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,以使不同的网站可以跨域获取数据。
检测项目:https://github.com/chenjj/CORScanner
Access-Control-Allow-Origin:指定哪些域可以访问域资源。
例如,如果requester.com想要访问provider.com的资源,那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限。
利用条件:对方登录了目标网站-->可以开始获取敏感信息
Access-Control-Allow-Origin: * # 当前页面文件接收任意页面的调用,接收所有的网站的数据(导致同源策略失效)
Access-Control-Allow-Origin: http://sywsec.com # 当前页面文件只接收http://sywsec.com的调用,指定从http://sywsec.com获取数据
Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie。
仅当allow-credentials标头设置为true时,才会发送Cookie。
Access-Control-Allow-Methods:指定可以使用哪些HTTP请求方法(GET,PUT,DELETE等)来访问资源。
此标头允许开发人员通过在requester.com请求访问provider.com的资源时,
指定哪些方法有效来进一步增强安全性。
需要调用外部资源,但是同源策略限制的太厉害。
目的:在同源策略下调用外部资源。
CORS 资源共享
用户在登录后台或者什么页面时,处于一种登录状态
在此登录状态下访问第三方页面/网站
第三方页面去请求这个后台或者页面内容,导致用户
页面内容泄露
只能做资源的获取
CSRF 有同源策略就会失败
用户在登录后台或者什么页面时,处于一种登录状态
在此登录状态下访问第三方页面/网站
第三方页面去请求这个后台或者页面内容,导致用户
页面内容泄露
JSONP跨域回调
- JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输。
- 检测项目:手工审查元素筛选或Burp项目
https://github.com/p1g3/JSONP-Hunter
# 支付接口
# 尝试调用支付宝官方接口判断是否支付成功
# 自己的网站域名时支付宝官方的域名吗?--> 不是,属于不同源。不符合同源策略。
除了支付接口,登录接口等一系列回调 (用户信息放在外部,向外部请求确认信息是否正确)
# 大用户网站(大用户群体的网站)是否有同源策略? -> 有
# 部分白名单,其他还是使用同源策略确保业务安全。
# 此类漏洞:找设置问题 => 看不到
# 黑盒:判断Origin值设置后是否能通过资源
# 看数据包有里面有哪些回调==>掺杂敏感信息==>获取出来
# 浏览器监听数据包,查找callback回调函数jsonp劫持示范
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP劫持测试</title>
</head>
<body>
<script type="text/javascript">
function callbackFunction(result)
{
alert(result.avatar);
}
</script>
<script type="text/javascript" src="https://user.huya.com/user/getUserInfo?callback=jQuery111307180218202556803_1648972650087&uid=1279516241906"></script>
</body>
</html>
实例
CORS资源跨域-敏感页面源码获取
复现步骤:
- 本地搭建访问页面跨域调用URL
- 受害者访问当前页面被资源共享
只做学习,不做其他
|
对应的PHP:
$file = fopen("secrect.html", "w+"); |
JSONP回调跨域-某牙个人信息泄露
复现步骤:
1、登录某牙找到回调有敏感信息
2、本地搭建访问页面跨域调用URL
3、访问本地页面可获取当前某牙信息
假设: |
子域名接管-瓜迪个人子域名劫持接管
复现步骤::xiaodi8.com
1、通过检测cname获取指向
2、发现testxiaodi.fun过期受控
3、注册testxiaodi.fun实现控制
当一个网站使用"一个域名指向另外一个域名"的服务时, |
检测项目-CORS&JSONP&子域名接管
# -i 指向txt(全球的100大网站),-t 限制100 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 矢幽武博客!
评论