jsmug:一个针对JSON Smuggling技术的测试PoC环境

2024-05-31 12:52

本文主要是介绍jsmug:一个针对JSON Smuggling技术的测试PoC环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于jsmug

jsmug是一个代码简单但功能强大的JSON Smuggling技术环境PoC,该工具可以帮助广大研究人员深入学习和理解JSON Smuggling技术,并辅助提升Web应用程序的安全性。

背景内容

JSON Smuggling技术可以利用目标JSON文档中一些“不重要”的字节数据实现任意文件传输。根据JSON文档的官方定义,JSON文件中的某些位置允许使用被称为不重要字节的字节数据来传输内容。这些所谓不重要的字节在JSON文档中没有任何的意义,因此会被jq之类的JSON解析工具直接忽略。这种“不重要”的字节包括:

0x09(水平制表符)

0x0a(新行)

0x0d(回车)

0x20(空格)

这些字节本身就不起眼,甚至根本就不是肉眼可见的,而且JSON解析器也会直接忽略这些字节,因此这4个字节可以用来编码任意数据或文件。与我们使用Base2系统以二进制格式表示数据相同,我们可以使用Base4系统使用这4个字节来表示数据:

上图中的数据显示了原始字节是如何以Base4表示的,接下来这些Base4字节被映射到它们各自的“不重要字节”的部分。根据指定的bytes_per_pair,Base4符号字节会被成对划分,并存放到JSON文档中的指定位置。通过指定应该存放在一起的字节数据的数量,我们还可以用其来测试网络安全检测规则的有效性。

工具下载&编译

由于该工具基于纯C语言开发,因此我们首先需要在本地设备上暗安装并配置好C语言环境,或直接安装gcc编译器。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/xscorp/jsmug.git

然后切换到项目目录中,使用gcc编译器完成代码编译:

$ cd jsmug$ gcc jsmug.c -o ./jsmug

工具使用

编码文件

我们可以使用下列密令对一个输入文件进行编码,并将编码后的结果输出保存到另一个文件中:

$ ./jsmug encode <input_file_name> <output_file_name> <bytes_per_pair>

在下面的代码示例中,我们将naabu代码编码进了一个JSON文件中,输出文件名称为“sweet-document.json”:

解码文件

我们可以使用下列命令对一个已编码的文件进行解码,并将输出的结果保存到另一个文件中:

$ ./jsmug decode <encoded_file_name> <output_file_name>

使用演示:

$ ./jsmug decode ./encoded-binary.json decoded-binary

在下面的代码示例中,我们对之前生成的“sweet-document.json”JSON文件进行解码,并获取原始的naabu代码,然后将其标识为“decoded-binary”:

项目地址

jsmug:【GitHub传送门】

参考资料

RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format

https://grimminck.medium.com/

https://grimminck.medium.com/json-smuggling-a-far-fetched-intrusion-detection-evasion-technique-51ed8f5ee05f

这篇关于jsmug:一个针对JSON Smuggling技术的测试PoC环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017985

相关文章

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像