[Day25] JSON Injection

正文

概念

JSON 是一个以纯文字为基础去生成的简单结构,可以很简单的与其他应用程序交换资料、传递讯息。但若是让未经验证的input在应用程序中执行,就会引发很多严重後果,因为这让攻击者可以将恶意内容注入JSON的实体。

由於JSON用於传递资料时,常会包含敏感资讯,例如验证凭证。一个简单的范例如下:

一个可以浏览其他用户页面的网站具有JSON Injection漏洞,当一个普通用户浏览另一名用户的页面时,Response如下:

{
"user": "Craig",
"description" : "Hi I'm Craig."
}

而网站在解析这段Json时使用eval直接拿取,而且不经过任何检查:

var userData = eval("(" + res + ")");
document.getElementById("#user").innerText = data.user;
document.getElementById("#description").innerText = data.description;

这时候若是一个恶意用户,在写description栏位的时候,插入一段恶意的javascript:
Hi I'm Craig."});alert("XSS");({"name":"Craig","description":" Hi I'm Craig."
就可以在普通用户浏览此页面时,谈出一个XSS字样的视窗,也可以写入其他更恶意的程序码,使一般使用者被route到恶意页面,或是导致cookie被窃取。

而依据网站应用程序的功能不同,引发的危害也有所高低,如若应用程序接收在JSON中的SQL查询,则可能引发SQL Injection,除此之外,各种之前提过的Injection、上传漏洞、LFI等等也都有机会触发。

因此JSON Injection更像是一个攻击面,若是更底层逻辑的应用程序信任来自JSON所传递的资料,而上层的应用程序在parse JSON时又没有做适当的检查或过滤时,就很容易引发漏洞。

Case Study

参考:
CVE-2021-40099

Improperly validated fields allows injection of arbitrary HTML via spoofed React objects


<<:  Day 25 - 介绍 OSPF

>>:  Day25 - LIFF 使用入门

[DAY28]番外篇-使用fetch发送请求

大家好,距离完赛越来越近了,过完最後一天的双十连假,心情也开始忧郁了QQ,还好本系列复杂的文章差不多...

新新新手阅读 Angular 文件 - ngFor(1) - Day19

本文内容 阅读有关 Angular 中有 ngFor 语法的笔记内容。 ngFor 在干嘛的? 它用...

[ Day 21 ] 路由管理 - React Router 2/2

在上一篇 Day 20 我们介绍了 React Router 的基本概念以及 React Rout...

Youtube API - 凡事趁早没有那麽多来日方长(总结)

『理工男嘛,就是有问题要解决问题,没问题那就创造问题』,在做为一个数据分析师之前,我本身的大学所学的...

Microsoft AZ-303 Latest Exam Dumps - Published By Microsoft professionals

Microsoft AZ-303 Latest Exam Dumps - Published By ...