超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【JavaScript】JSON.parse 背后的安全隱患與黑盒利用方法

admin
2025年4月23日 16:59 本文熱度 211

?? 一段簡(jiǎn)單的 JSON 解析代碼,可能是一次嚴(yán)重的原型污染、提權(quán)繞過(guò)、服務(wù)癱瘓的開始。本文深入解析 JSON.parse() 的安全風(fēng)險(xiǎn)、攻擊方式,并講解如何在黑盒測(cè)試中通過(guò)數(shù)據(jù)包行為反推出后臺(tái)邏輯,為你打開攻防對(duì)抗中的新視角。


?? 1. JSON.parse 是什么?它本身安全嗎?

JSON.parse() 是 JavaScript 原生函數(shù),用于將字符串解析為 JavaScript 對(duì)象:

const obj = JSON.parse('{"user":"admin"}');

? 它本身不會(huì)執(zhí)行代碼、不會(huì)像 Java 反序列化一樣觸發(fā)遠(yuǎn)程類加載或代碼執(zhí)行。

??但它存在安全隱患的傳播點(diǎn),關(guān)鍵在于:你如何使用解析后的對(duì)象!


?? 2. 典型安全風(fēng)險(xiǎn)與利用場(chǎng)景

? 風(fēng)險(xiǎn)一:原型鏈污染(Prototype Pollution)

關(guān)鍵字段如 __proto__ / constructor / prototype 被寫入對(duì)象中,通過(guò)合并操作傳播到所有對(duì)象。

?? 利用前提:

  • 后端用 Object.assign、lodash.merge 等合并用戶傳參與默認(rèn)配置。
  • 沒(méi)有進(jìn)行關(guān)鍵字段過(guò)濾。

?? 典型 payload:

{
"__proto__": {
"admin"true
  }
}

?? 后果示例:

const config = Object.assign({}, defaultConfig, JSON.parse(userInput));
// 之后任何 new Object() 都可能帶上 admin: true

?? 常見數(shù)據(jù)包格式

POST /api/profile HTTP/1.1
Host: target.example.com
Content-Type: application/json
Content-Length: 70

{
  "__proto__": {
    "isAdmin": true
  }
}

? Burp 分析方法:

步驟觀察點(diǎn)
1. 請(qǐng)求發(fā)出目標(biāo)接口是否處理 JSON 格式數(shù)據(jù)
2. 重復(fù)訪問(wèn)其他接口是否行為改變(權(quán)限 / 響應(yīng)內(nèi)容)
3. Proxy + Repeater逐步調(diào)整 payload,如 ["__proto__"]
4. 添加測(cè)試斷點(diǎn)使用 Logger++ 插件記錄響應(yīng)中的 isAdmin 等字段是否被反映

如果行為生效,將獲得Admin權(quán)限,頁(yè)面菜單等權(quán)限將有明顯改變


? 風(fēng)險(xiǎn)二:拒絕服務(wù)攻擊(Billion Laughs / Deep Nesting DoS)

{
"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{}}}}}}}}}}
}
  • 重復(fù)嵌套結(jié)構(gòu)觸發(fā) CPU 暴漲或內(nèi)存崩潰。
  • 常用于前期探測(cè)、WAF 繞過(guò)測(cè)試。

? 風(fēng)險(xiǎn)三:DOM-Based XSS(前端使用不當(dāng))

如果前端用 innerHTML 或 document.write 直接渲染 JSON 解析的字段:

const data = JSON.parse(payload);
document.body.innerHTML = data.content;

攻擊者構(gòu)造:

{"content""<img src=x onerror=alert(1)>"}

?? 3. 數(shù)據(jù)包特征分析

我們?nèi)绾?*在黑盒測(cè)試中識(shí)別系統(tǒng)內(nèi)部使用了 JSON.parse()**?以下是典型思路:


?? 特征:API 接收 JSON 格式 body

POST /api/config HTTP/1.1
Content-Type: application/json

{"username":"admin"}

?? 判斷方式分析:

線索
推理
是否支持嵌套對(duì)象?
是 → 可能直接 JSON.parse 解析并用于配置邏輯
修改特殊鍵如 __proto__ 有無(wú)響應(yīng)變化?
有 → 極有可能未進(jìn)行關(guān)鍵字段過(guò)濾
是否響應(yīng)體中出現(xiàn)原樣字段回顯?
是 → 可能存在配置渲染邏輯
是否異常響應(yīng)(500 / timeout)?
是 → 考慮 DoS 測(cè)試有效


??? 組合測(cè)試

  • 提交 __proto__ → 檢查是否持久化
  • 提交 constructor.prototype.polluted = true → 檢查全局污染跡象
  • 利用 ["__proto__"] 數(shù)組索引寫入,繞過(guò)某些黑名單
  • 使用深嵌套 JSON → 檢測(cè)解析限制

?? 4. 防御建議

安全措施
描述
輸入校驗(yàn)
禁止解析中出現(xiàn) __proto__、constructor 等關(guān)鍵字段
使用深拷貝庫(kù)
避免使用 Object.assign,推薦 structuredClone() 或安全庫(kù)
限制嵌套層級(jí)
使用庫(kù)如 json-parse-better-errors、ajv 等做層級(jí)與結(jié)構(gòu)校驗(yàn)
WAF 規(guī)則增強(qiáng)
對(duì) JSON payload 關(guān)鍵字(如 "__proto__")做識(shí)別和阻斷
最小權(quán)限原則
后端合并配置時(shí)應(yīng)隔離用戶與系統(tǒng)配置空間,避免全局污染


? 總結(jié)

項(xiàng)目
說(shuō)明
安全點(diǎn)
JSON.parse本身安全
風(fēng)險(xiǎn)點(diǎn)
使用方式不安全:合并配置、渲染 HTML、未校驗(yàn)字段
探測(cè)方式
看輸入格式、嵌套特征、行為響應(yīng)變化
利用策略
利用字段污染 → 影響權(quán)限邏輯 / 全局變量 / DoS
防御建議
嚴(yán)格輸入控制 + 合理合并方式 + 安全庫(kù)使用


閱讀原文:原文鏈接


該文章在 2025/4/24 9:23:14 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved