前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jsmug:一个针对JSON Smuggling技术的测试PoC环境

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

作者头像
FB客服
发布2024-05-31 14:08:26
1170
发布2024-05-31 14:08:26
举报
文章被收录于专栏:FreeBuf
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编译器。

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

代码语言:javascript
复制
git clone https://github.com/xscorp/jsmug.git

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

代码语言:javascript
复制
$ cd jsmug

$ gcc jsmug.c -o ./jsmug

工具使用

编码文件

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

代码语言:javascript
复制
$ ./jsmug encode <input_file_name> <output_file_name> <bytes_per_pair>

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

解码文件

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

代码语言:javascript
复制
$ ./jsmug decode <encoded_file_name> <output_file_name>

使用演示:

代码语言:javascript
复制
$ ./jsmug decode ./encoded-binary.json decoded-binary

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编码文件
  • 解码文件
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档