【JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总】

JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总
在这里插入图片描述

本文一是在为测试过程中遇到json返回格式时提供测试思路,二是几乎所有国内的资料都混淆了json和jsonp的区别——这是两种技术;以及json和jsonp hijacking的区别——这是两个漏洞,这里做个解释。

1、概念

1)什么是json

json(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON最常用的格式是对象的键值对,例如下面这样:

{“firstName”: “Jayway”,“lastName”: “0Day”}

2)json hijacking漏洞

json劫持(jsonhijacking)漏洞其实是一个跨域数据窃取漏洞,它通过诱导用户点击恶意文件,重写Array()的构造函数的方法,将敏感的json数据发送攻击者,从而造成敏感信息泄露,所以可以理解为“通过CSRF方式导致的敏感信息泄露”。

举例说明:用户Jayway访问网站https://haacked.com/发出请求:

GET:/demos/secret-info.json返回敏感信息:{“firstName”:“Jayway”, “lastName”: “0Day”}此时,攻击者在他的服务器上放置这样一个html文件:
在这里插入图片描述

攻击者诱导用户Jayway点击这个文件,页面会弹框。若将alert改为其他操作函数,攻击者可以对用户的json数据作任意处理:
在这里插入图片描述

攻击的成功关键在于JavaScript允许重新定义Array构造函数:如果在JS中定义了两个相同名称的函数/方法,那么前一个函数等于定义无效,后一个函数才是有效的定义。

上面的HTML文件构造,关键是三步:

1)重新定义数组构造函数Array = function() 并将数组赋值给我们定义的全局变量;

2)向目标网站发送一条请求,借用被攻击者的session权限;

3)将获得的数据赋给yourData,从而进行任意处理。

其中第一步的函数覆盖是关键,可以JS中的方法覆盖的特性或者使用JS的特殊方法Object.prototype.__defineSetter__等。

3)什么是jsonp

jsonp(jsonp withPadding)是带有Padding的JSON,它的产生就是为了解决跨域访问问题,基本原理是利用了HTML 里 元素标签,远程调用 JSON 文件来实现数据传递。它最大的特征就是回传,也就是常见的callback函数。

比如,在一个端点处有下列json数据:
在这里插入图片描述

若传输到reports域内会因同源策略而无法进行xhr传输:
在这里插入图片描述

所以我们先通过 JSONP 的”Padding “输出为:
在这里插入图片描述

而后定义myCallback函数,在脚本标记中引用API调用来调用,callback参数在这里是可以自定义的:
在这里插入图片描述

4)jsonp injection漏洞

了解了jsonp的用法,由于callback参数可以自定义,所以就有了所有注入漏洞都有的通病:“输入在输出中回显”,其中导致的一个问题就是XSS,前提是返回包Content-Type:text/html而不是Content-Type: application/json。

此外jsonp也有hijacking漏洞,但稍有不同,json是重写函数,而jsonp是通过重写参数callback的函数值,payload更简单,自定义一个函数名然后通过callback调用:
在这里插入图片描述

达到的攻击效果主要是盗取用户敏感数据:
在这里插入图片描述

2、漏洞对比

现在我们知道jsonhijacking和jsonp injection是两个完全不同的漏洞,两种漏洞的共性是:

1) 挖掘方法:在渗透过程中关注或通过burp的HTTP history功能寻找以json形式返回的带有敏感数据的数据包;

2) 都可以实现hijacking攻击,达到盗取用户敏感信息,劫持钓鱼、挂马等。
在这里插入图片描述

不同点是:

1) 返回格式不同:jsonp请求包里有callback参数,返回包里也多一个

parseResponse({“xx”:“yy”});

2) 攻击效果不同: jsonpinjection除了hijacking还可能造成注入漏洞xss。

3、实战案例

1)Twitter json hijacking

比较老的一个漏洞,原理和上面类似,攻击payload如下,重写的函数__defineSetter__也是很多浏览器使用的js扩展。
在这里插入图片描述

2) 新浪jsonphijacking盗取csrf_token

经典的jsonp hijacking,callback参数回显:
在这里插入图片描述

构造HTML文件获取csrf token:
在这里插入图片描述

进一步使用token构造发帖的post包,造成蠕虫攻击:
在这里插入图片描述

点击触发,发帖成功:
在这里插入图片描述

3) Liberapay jsonp hijacking

/username/charts.json端点可以返回一个JSONP回调,构造payload造成信息泄露:
在这里插入图片描述

4) Quora jsonp xss

本质上不是json的漏洞,返回值格式为jsonp,由于post请求参数__e2e_action_id未经过滤,输入回显到返回包,导致xss,返回包简化为:

“js”:"require(‘actions’).finishAction(‘’,alert(),‘’, {"cont… "},
在这里插入图片描述
在这里插入图片描述

4、 漏洞修复

Hijacking漏洞本质上是CSRF漏洞,防范办法和绕过技巧也类似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58263.shtml

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

相关文章

基于知识图谱的设备问答系统

你是不是还在为毕业设计苦恼?今天我就来给大家分享一款基于知识图谱的设备问答系统,不仅技术领先,而且非常适合用作毕业设计项目,帮助你轻松通过! 项目简介 这个设备问答系统基于Django(后端框架&#xf…

从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)

从零开始的 vue项目部署到服务器详细步骤(vue项目build打包nginx部署配置ssl证书) 文章目录 从零开始的 vue项目部署到服务器详细步骤(vue项目build打包nginx部署配置ssl证书)一、前言二、vue项目部署前配置1、vite.config.js 增加…

ubuntu内核更新导致显卡驱动掉的解决办法

方法1,DKMS指定内核版本 用第一个就行 1,借鉴别人博客解决方法 2,借鉴别人博客解决方法 方法2,删除多于内核的方法 系统版本:ubuntu20.24 这个方法是下下策,如果重装驱动还是不行,就删内核在…

豆瓣同城活动采集-过去一年到未来已定档活动

通过采集豆瓣同城活动,来辅助分析一个城市的文商旅体活跃繁荣程度。 以成都为例,2023年10月30日到2024年11月未来已定档活动期间,豆瓣同城活动共有975场。 示例数据: 活动网址:有,此处不显示 封图网址&…

海量数据面试题

⭐️前言⭐️ 本篇文章主要针对在面试时可能涉及到的海量数据的面试题,该类型面试题常常考虑通过位图、布隆过滤器或者哈希的方式来解决。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何…

pytorh学习笔记——cifar10(九)使用torhvision的标准resnet模型

之前的demo都是模仿和简化了已有的模型,也可以直接调用orhvision的标准模型,代码将更加简单。 新建resnet18.py import torch.nn as nn from torchvision import modelsclass ResNet18(nn.Module):def __init__(self, num_classes10):super(ResNet18, …

json与python中字典的互相转化

json的定义 JSON (JavaScript Object Notation) ,是一种轻量级的数据交换格式。它的使用范围很广,并成为 ECMA 标准,可以被使用在多种编程语言中,用于前后端之间的数据传输、存储和交换数据。可以说是“用…

如何快速分析音频中的各种频率成分

从视频中提取音频 from moviepy.editor import VideoFileClip# Load the video file and extract audio video_path "/mnt/data/WeChat_20241026235630.mp4" video_clip VideoFileClip(video_path)# Extract audio and save as a temporary file for further anal…

Rust 力扣 - 5. 最长回文子串

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 从中心点先寻找和中心点相等的左右端点,在基于左右端点进行往外扩散,直至左右端点不相等或者越界,然后左右端点这个范围内就是我们找寻的回文串,我们遍历中心点&am…

在Java中,需要每120分钟刷新一次的`assetoken`,并且你想使用Redis作为缓存来存储和管理这个令牌

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

macOS 15 Sequoia dmg格式转用于虚拟机的iso格式教程

想要把dmg格式转成iso格式,然后能在虚拟机上用,最起码新版的macOS镜像是不能用UltraISO,dmg2iso这种软件了,你直接转放到VMware里绝对读不出来,办法就是,在Mac系统中转换为cdr,然后再转成iso&am…

Unity3D学习FPS游戏(3)玩家第一人称视角转动和移动

前言:上一篇实现了角色简单的移动控制,但是实际游戏中玩家的视角是可以转动的,并根据转动后视角调整移动正前方。本篇实现玩家第一人称视角转动和移动,觉得有帮助的话可以点赞收藏支持一下! 玩家第一人称视角 修复小问…

NAT技术和代理服务器

NAT IP原理 之前我们讨论了, IPv4协议中, IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:很多学校, 家庭, 公司内部采用每个终端设置私有…

批处理操作的优化

原来的代码 Override Transactional(rollbackFor Exception.class) public void batchAddQuestionsToBank(List<Long> questionIdList, Long questionBankId, User loginUser) {// 参数校验ThrowUtils.throwIf(CollUtil.isEmpty(questionIdList), ErrorCode.PARAMS_ERR…

2023IKCEST第五届“一带一路”国际大数据竞赛--社交网络中多模态虚假 媒体内容核查top11

比赛链接&#xff1a;https://aistudio.baidu.com/competition/detail/1030/0/introduction PPT链接&#xff1a;https://www.ikcest.org/bigdata2024/zlxz/list/page.html 赛题 社交网络中多模态虚假媒体内容核查 背景 随着新媒体时代信息媒介的多元化发展&#xff0c;各种内容…

GitHub Star 数量前 5 的开源应用程序生成器

欢迎来的 GitHub Star 数量排名系列文章的第 7 篇——最受欢迎的应用程序生成器。 之前我们已经详细探讨过&#xff1a;在 GitHub 上最受欢迎的——无代码工具、低代码项目、内部工具、CRUD项目、自部署项目和 Airtable 开源替代品。累计超过 50 个优质项目&#xff01;&#…

橘子多开同步器 v6.0 免费版

下载&#xff1a; 【1】https://drive.uc.cn/s/ddb0774e92924?public1 【2】https://pan.quark.cn/s/b5b1aae8c331 橘子多开同步器是一款专门为了游戏工作室而打造的免费游戏客户端多开同步工具&#xff0c;涵盖了包括客户端多开、客户端键鼠同步、智能防封等功能。 功能介…

Linux 进程优先级 进程切换

目录 优先级 概念 为什么优先级要限制在一定范围内 进程切换 方式 EIP寄存器(程序计数器) 进程在运行时会使用寄存器来保存临时数据 进程的上下文是什么&#xff1f; 进程的上下文保存到哪&#xff1f; 内核栈或专门的上下文结构也在内核空间&#xff1f;那为什么不直…

海外逆向代购:新机遇下的跨境赚钱之道

所谓逆向代购&#xff0c;即利用海外客源&#xff0c;将中国的优质商品反向代购至海外市场&#xff0c;实现跨境赚钱的同时&#xff0c;也让更多中国商品走向世界。 近年来&#xff0c;随着中国经济的飞速发展和消费水平的不断提升&#xff0c;中国商品在全球市场上的认可度越来…

一个简单的例子,说明Matrix类的妙用

在Android、前端或者别的平台的软件开发中&#xff0c;有时会遇到类似如下需求&#xff1a; 将某个图片显示到指定的区域&#xff1b;要求不改变图片本身的宽高比&#xff0c;进行缩放&#xff1b;要求最大限度的居中填充到显示区域。 以下示意图可以简单描绘该需求 以Androi…