JSONP漏洞详解

目录

同源策略

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.mzph.cn/news/753351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

碳课堂|什么是碳减排?如何减少碳排放?

一、碳减排的定义及提出背景&#xff1a; 碳减排&#xff0c;即减少人类在生产、生活中二氧化碳&#xff08;CO2&#xff09;等温室气体的排放量&#xff0c;以应对全球气候变暖。 18世纪工业革命起&#xff0c;人类在生产活动中使用大量矿物燃料&#xff08;如煤、石油等&am…

从电子邮件到即时通讯:信息技术演变与现代沟通方式的变迁

上世纪90年代&#xff0c;欧美企业界迎来了信息化建设的大爆发时期。Oracle、SAP和Adobe等国际知名软件巨头纷纷致力于推广和普及电子邮件系统&#xff0c;使电子邮件迅速成为企业和个人进行信息交换的主要工具之一。电子邮件的出现&#xff0c;也提供了一种高效的信息传递手段…

zookeeper集群安装部署和集群异常处理

准备jdk和zookeeper安装包【官网即可下载】 zookeeper-3.5.1-alpha.tar.gz jdk1.7.0_8020200612.tar 准备三台linux虚拟机【具体以项目实际需要为准】&#xff0c;并安装jdk和zookeeper 虚拟机地址如下&#xff1a;194.1.1.86&#xff08;server.1&#xff09;、194.1.1.74…

阿里云-云服务器ECS新手如何建网站?

租阿里云服务器一年要多少钱&#xff1f; 不同类型的服务器有不同的价格。 以ECS计算型c5为例&#xff1a;2核4G-1年518.40元&#xff0c;4核8G-1年948.00元。 阿里云ECS云服务器租赁价格由三部分组成&#xff1a; 也就是说&#xff0c;云服务器配置成本磁盘价格网络宽带价格…

本地部署Grok需要的条件

2024年3月18日凌晨三点钟&#xff0c;马斯克开源了Grok&#xff0c;兑现了他承诺&#xff0c;Grok 的开源将为人工智能技术的发展和应用带来新的机遇&#xff0c;那我们如何运行、部署Grok呢。 本地部署Grok通常需要以下条件&#xff1a; 硬件资源&#xff1a; 大量的计算资源&…

【JAVA笔记】IDEA配置本地Maven

文章目录 1 配置本地Maven1.1 Maven下载1.2 Maven安装与配置1.2.1 安装1.2.2 配置1.2.2.1 环境配置1.2.2.2 本地仓库配置 2 IDEA设置本地Maven 1 配置本地Maven 1.1 Maven下载 官网&#xff1a;http://maven.apache.org/下载地址&#xff1a;http://maven.apache.org/downloa…

浏览器如何查看http请求的报文?

HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。 它可以使浏览器更加高效&#xff0c;使网络传输减少。 它不仅保证计算机正确快速地传输超文本文档&#xff0c;还确定传输文档中的哪一部分&#xff0c;以及哪部分内容首先显示 (如文本先于图形)等。所以在node.js里…

Vertex cover preprocessing for influence maximization algorithms

Abstract 影响力最大化问题是社交网络分析中的一个基本问题&#xff0c;其目的是选择一小组节点作为种子集&#xff0c;并在特定的传播模型下最大化通过种子集传播的影响力。本文研究了独立级联模型下影响力最大化算法中执行顶点覆盖作为预处理的效果。所提出的方法从主要计算过…

结构体成员访问操作符

1.结构体成员的直接访问&#xff1a; 结构体变量.成员名&#xff1a; 2.结构体成员的间接访问: 间接访问应用于指向结构体变量的指针&#xff1a;如下

代码随想录算法训练营第九天|28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾

题目&#xff1a;28. 实现 strStr() 文章链接&#xff1a;代码随想录 视频链接&#xff1a;LeetCode:实现strStr 题目链接&#xff1a;力扣题目链接 详解&#xff1a;KMP&#xff1a;主要应用于字符串匹配&#xff0c;当出现字符串不匹配是&#xff0c;可以知道一部分之前已…

YOLOv8独家改进:block改进 | RepViTBlock和C2f进行结合实现二次创新 | CVPR2024清华RepViT

💡💡💡本文独家改进:CVPR2024 清华提出RepViT:轻量级新主干!从ViT角度重新审视移动CNN,RepViTBlock和C2f进行结合实现二次创新 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡…

数字化时代的风向标:解密Facebook的成功秘诀

在当今数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为全球最大的社交媒体平台之一&#xff0c;其成功之处不言而喻。本文将深入探讨Facebook的成功秘诀&#xff0c;解密其在数字化时代的风向标。 用户体验至上&#xff1a; …

深入探讨ChatGPT:技术突破与应用前景

目录 一、ChatGPT究竟是什么&#xff1f; 二、ChatGPT的发展脉络 三、ChatGPT的突出优势 强大的语言生成能力 多场景适应性 多语言处理能力 广泛的应用范围 数据敏感性的重视 四、结语&#xff1a;ChatGPT的未来与挑战 Tips&#xff1a;国内的ChatGPT ⭐ 点击进入Chat…

什么是React属性钻取(Prop Drilling)

一、介绍 在React开发过程中&#xff0c;状态管理是一个绕不开的话题。无论是新手还是有经验的开发者&#xff0c;都会面临如何有效管理组件状态的挑战。React为我们提供了多种状态管理方案&#xff0c;如直接的状态传递&#xff08;俗称"属性钻取"&#xff09;、Co…

那些年我们在数模竞赛中踩过的坑(附避坑指南)

数乐君猜测关注我们的同学大多都已经参加过数模竞赛了&#xff0c;可能有的同学对于数模竞赛的经验已经很丰富&#xff0c;或者即将要参加第一次数模竞赛&#xff0c;但要说起曾经在数模竞赛中踩的那些坑&#xff0c;也是有苦难言&#xff0c;那或许大家会好奇&#xff0c;数模…

【神经网络 基础知识整理】前向传播 反向传播

神经网络 基础知识整理 前向传播前向传播pytorch中的forward函数 反向传播 顾名思义&#xff0c;前向传播是从前往后传播的&#xff0c;从input层到output层的方向&#xff1a;前面一层的输出传入后一层作为输入&#xff0c;再对数据进行相应的处理&#xff0c;继续传下去&…

力扣Lc17--- 345.反转字符串中的元音字母(java版)-2024年3月18日

1.题目 2.知识点 注1&#xff1a; indexOf() 是 Java 中 String 类的方法之一&#xff0c;它用于查找指定字符或字符串在字符串中第一次出现的位置。如果找到了该字符或字符串&#xff0c;则返回它在字符串中的索引位置&#xff08;从0开始&#xff09;&#xff0c;如果没有找…

03、判断和循环

三、判断与循环 文章目录 三、判断与循环顺序结构分支结构If语句在程序中就是用来判断的switch 循环结构forwhiledo while 顺序结构 顺序结构是Java程序默认的执行流程&#xff0c;按照代码的先后顺序&#xff0c;从上到下依次执行。 分支结构 If语句在程序中就是用来判断的 …

C语言 实用调试技巧

我们的博客已经更新到了数据结构&#xff0c;但是当我在深耕数据结构时我发现我在C语言是遗漏了一个重要的东西&#xff0c;那就是C语言的使用调试技巧。这篇博客对数据结构非常重要&#xff0c;请大家耐心观看。 1. 什么是bug&#xff1f; 第一次被发现的导致计算机错误的飞蛾…

Vue2 基础三组件化开发

代码下载 组件 (Component) 是 Vue.js 最强大的功能之一&#xff0c;组件可以扩展 HTML 元素&#xff0c;封装可重用的代码。 组件注册 全局注册&#xff1a; Vue.component(组件名称, {data: 组件数据,template: 组件模板内容});// 全局组件Vue.component(button-counter, …