JSONP漏洞详解

news/2024/11/14 0:57:33/

目录

同源策略

JSONP简介

JSONP劫持漏洞

漏洞原理

漏洞利用过程

利用工具

JSONP漏洞挖掘思路

JSONP防御


首先,要了解一下什么是同源策略?

同源策略

同源策略(SOP)是浏览器的一个安全基石,浏览器为了保证数据的完整性和机密性,必须严格隔离两个不同源的网站。举个例子:如果没有同源策略,打开一个合法网站,又打开一个恶意网站,没有同源策略的情况下恶意网站的脚本能够随意的操作合法网站的任何可操作的资源,没有任何限制。

同源策略规定:

  • 非同源,不能共享Cookie等
  • 非同源,DOM和JS对象无法获得
  • 非同源,Ajax请求被禁止

那什么又是同源呢?

同源大概要满足三个条件,即同协议、同域名、同端口

但为了保证加载一些跨域资源,以下标签是不受同源策略限制的:

<script src="url">   //加载本地js执行
<img src="url>     //图片
<link href="url">    //css
<iframe src="url">  //任意资源

JSONP简介

JSONP是基于JSON格式的为解决跨域请求资源而产生的解决方案。实现的基本原理就是动态创建<script>标签,然后利用<script>标签的src不受同源策略约束来跨域获取数据。

JSONP有两部分组成:回调函数和数据。回调函数就是当响应到来时应该在页面中调用的函数。数据就是传入回调函数中的JSON数据。

JSONP劫持漏洞

漏洞原理

如果服务端对JSONP的请求来源校验不严格,那么攻击者可以构造恶意的JSONP调用页面,诱导被攻击者访问来达到截取用户敏感信息的目的。

JSONP与CSRF类似,都是需要用户登录账号,身份认证还没有被消除的情况下访问攻击者精心设计好的页面。而且同样的是需要用户去访问有恶意的页面。只不过JSONP需要攻击者寻找敏感JSON数据API接口,构造恶意的代码。

漏洞利用过程

1、比如,用户在网站B注册并登录,网站B包含了用户的id、name等信息;

2、用户通过浏览器向网站A发出URL请求;

3、网站A向用户返回响应页面,响应页面中包含了JavaScript的回调函数和向网站B请求

<script type="text/javascript">
function Callback(result)
{alert(result.name);
}
</script>
<script type="text/javascript" src="http://B.com/user?jsonp=Callback"></script>

4、用户收到跨域响应,解析JS代码,将回调函数作为参数向网站B发出请求;

5、网站B接收到请求,解析请求URL,以JSON格式生成数据,封装好用户的信息的JSON数据作为回调函数的参数返回浏览器:

Callback({"id":1,"name":"test","email":"test@test.com"})

6、网站B数据返回后,浏览器则自动执行Callback函数对步骤4返回的JSON格式数据进行处理,通过alert弹窗展示了用户在网站B的注册信息。另外也可将JSON数据回传到网站A的服务器,这样网站A利用网站B的JSONP漏洞便获取到了用户在网站B注册的信息。

利用工具

可以使用一个工具pocbox: pocbox

将url和jsonp类型放入pocbox,就可以生成js。然后用Tomcat或者其他拉一个html就好。

JSONP漏洞挖掘思路

常用关键词:

callback
jsoncallback
jsonpcallback
jsoncall
jsonpcall
cb
jsoncb
jsonpcb
=json
=jsonp
=jQuery 

可以在Google等有高级语法使用高级语法搜索:

inurl:json
inurl:callback=
site:a.com inurl:json

可以使用手工测试:

f12 , network , 勾选Preserve log , 防止页面刷新跳转的时候访问记录被重置
然后 F5 刷新,进入 NetWork 标签 ,CTRL+F 查找一些关键词 如 callback json jsonp jsonpcallback
然后找响应中存在敏感信息的 , 然后构建 poc测试

JSONP防御

  • 尽量避免跨域的数据传输,如果要进行跨域的数据传输,必须要对敏感的数据获取做权限认证;
  • 严格过滤calback函数名及JSON里数据的输出,限制函数名的长度;
  • ...

参考资料:

生命在于学习——Jsonp漏洞-CSDN博客

jsonp劫持-CSDN博客


http://www.ppmy.cn/news/1387194.html

相关文章

centos虚拟机设置静态IP地址

vim编辑文件 /etc/sysconfig/network-scripts/ifcfg-ens33 重启即可。

加速创新:电子元器件采购平台与供应商合作的最佳实践

在竞争激烈的电子元器件市场中&#xff0c;采购平台与供应商的合作至关重要。通过合作&#xff0c;双方可以共同加速创新、降低成本、提高效率。本文将探讨在电子元器件采购领域中&#xff0c;采购平台与供应商合作的最佳实践。 1. 建立战略合作关系 共享愿景与目标&#xff1a…

Java开发者的AI时代必学技能

Java版数据结构和算法AI算法课程 【点击开始学习】 学习地址&#xff1a;https://class.imooc.com/sale/fullstackalgo 在当今数字时代&#xff0c;数据已成为驱动创新和决策的关键资源。为了在这个竞争激烈的世界中脱颖而出&#xff0c;掌握数据结构、算法和人工智能技术已…

盛元广通全新智能实验室管理系统3.0强势上线

目前&#xff0c;盛元广通全新上线智能实验室管理系统3.0&#xff0c; 在原有的产品基础上迭代更新升级&#xff0c;此次升级以“新势能、智能化、低代码化”为产品功能赋能&#xff0c;从界面的整体布局、数据的维度、和兼容、安全性方面都实现了质的提升&#xff0c;系统在易…

1688商品详情API接口采集商品上货

阿里巴巴1688平台并没有直接公开商品详情API接口供普通用户或开发者进行商品采集和上货。1688平台主要服务于批发和采购业务&#xff0c;其API服务通常面向的是有深度合作关系的商家或开发者&#xff0c;且需要经过申请和审核流程。 请求示例&#xff0c;API接口接入Anzexi58 …

全局路径规划算法 - 动态规划算法Python实现

参考博客&#xff1a; &#xff08;1&#xff09;算法数据结构——动态规划算法&#xff08;Dynamic Programming&#xff09;超详细总结加应用案例讲解 &#xff08;2&#xff09;【路径规划】全局路径规划算法——动态规划算法&#xff08;含python实现&#xff09; &#xf…

项目性能优化—性能优化的指标、目标

项目性能优化—性能优化的指标、目标 性能优化的终极目标是什么 性能优化的目标实际上是为了更好的用户体验&#xff1a; 一般我们认为用户体验是下面的公式&#xff1a; 用户体验 产品设计&#xff08;非技术&#xff09; 系统性能 ≈ 系统性能 快 那什么样的体验叫快呢…

批量改文件名文件管理软件,随机一个字母重命名,轻松实现文件名的个性化重命名

在繁忙的日常生活中&#xff0c;我们往往需要对大量的文件进行重命名&#xff0c;以便更好地管理和分类。然而&#xff0c;手动为每个文件起名既费时又费力。现在&#xff0c;有一种简单而高效的方法可以帮助您解决这个问题——只需随机生成一个字母。 第一步&#xff0c;进入…