【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 这个方法是下下策,如果重装驱动还是不行,就删内核在…

Spring 的事务传播机制

Spring 的事务传播机制定义了一个事务方法在遇到已经存在的事务时如何处理。事务传播属性(Propagation)提供了七种机制,以适应不同的业务需求和事务边界管理。 1. Spring 的事务传播机制的类型 (1)REQUIRED&#xff…

uv sync失败HTTP status server error (504 Gateway Timeout) for url (http://...)

内网环境下,服务器Linux系统可以正常uv sync更新和安装依赖,本地电脑Windows系统却总是报错,大致错误信息如下: error: Failed to download: xxxCaused by: HTTP status server error (504 Gateway Timeout) for url (http://...…

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

通过采集豆瓣同城活动,来辅助分析一个城市的文商旅体活跃繁荣程度。 以成都为例,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, …

JavaScript 前端开发

JavaScript 前端开发是现代 Web 开发的重要组成部分。它涉及到使用 JavaScript 语言来创建动态的、交互式的网页应用。随着技术的发展,JavaScript 不仅限于浏览器中的脚本编写,还可以用于服务器端开发(如 Node.js)、移动应用开发&…

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、面经吐血整理的 面试技…

HarmonyOS“一次开发,多端部署”

目录 一、核心概念与目标 二、开发基础问题与解决思路 (一)基础问题 (二)解决思路 三、应用开发流程与示例 四、工程管理具体操作 五、应用 UX 设计通用规则与考虑因素 一、核心概念与目标 定义:一套代码工程&…

Netty的简介与实战

Netty简介 一、背景与来源 Netty最初是由JBOSS提供的一个Java开源框架,现在已成为Github上的独立项目。它基于Java的NIO(New Input/Output)模型,提供了简单而强大的抽象,使得网络编程变得更加容易和高效。 二、特点…

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

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

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

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

mysql 十把锁之《小猫钓鱼》

元数据锁:在这个美丽的森林里,小猫们决定要把钓鱼的成果记录下来。于是,它们首先需要创建一个 “鱼表” 来存放钓鱼的信息。当开始创建鱼表的时候,数据库自动为这个表加上了元数据锁。这个锁是为了防止在表的结构定义等元数据被修…

NAT技术和代理服务器

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

学习力体系

一、故事引入 在一个小镇上,有一位年轻的学者小明,梦想成为一名科 学家。然而,他总是感到学习困难,知识无法长久保持。有一天,他遇到了一位智者,智者告诉他:“学习的力量能够改变命运。”小明意…