LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

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

admin
2025年4月23日 16:59 本文热度 29

🔍 一段简单的 JSON 解析代码,可能是一次严重的原型污染、提权绕过、服务瘫痪的开始。本文深入解析 JSON.parse() 的安全风险、攻击方式,并讲解如何在黑盒测试中通过数据包行为反推出后台逻辑,为你打开攻防对抗中的新视角。


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

JSON.parse() 是 JavaScript 原生函数,用于将字符串解析为 JavaScript 对象:

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

✅ 它本身不会执行代码、不会像 Java 反序列化一样触发远程类加载或代码执行。

❗️但它存在安全隐患的传播点,关键在于:你如何使用解析后的对象!


🔥 2. 典型安全风险与利用场景

✅ 风险一:原型链污染(Prototype Pollution)

关键字段如 __proto__ / constructor / prototype 被写入对象中,通过合并操作传播到所有对象。

🧪 利用前提:

  • 后端用 Object.assignlodash.merge 等合并用户传参与默认配置。
  • 没有进行关键字段过滤。

📦 典型 payload:

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

💥 后果示例:

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

📦 常见数据包格式

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

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

✅ Burp 分析方法:

步骤观察点
1. 请求发出目标接口是否处理 JSON 格式数据
2. 重复访问其他接口是否行为改变(权限 / 响应内容)
3. Proxy + Repeater逐步调整 payload,如 ["__proto__"]
4. 添加测试断点使用 Logger++ 插件记录响应中的 isAdmin 等字段是否被反映

如果行为生效,将获得Admin权限,页面菜单等权限将有明显改变


✅ 风险二:拒绝服务攻击(Billion Laughs / Deep Nesting DoS)

{
"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{}}}}}}}}}}
}
  • 重复嵌套结构触发 CPU 暴涨或内存崩溃。
  • 常用于前期探测、WAF 绕过测试。

✅ 风险三:DOM-Based XSS(前端使用不当)

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

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

攻击者构造:

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

🧠 3. 数据包特征分析

我们如何**在黑盒测试中识别系统内部使用了 JSON.parse()**?以下是典型思路:


🧩 特征:API 接收 JSON 格式 body

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

{"username":"admin"}

📍 判断方式分析:

线索
推理
是否支持嵌套对象?
是 → 可能直接 JSON.parse 解析并用于配置逻辑
修改特殊键如 __proto__ 有无响应变化?
有 → 极有可能未进行关键字段过滤
是否响应体中出现原样字段回显?
是 → 可能存在配置渲染逻辑
是否异常响应(500 / timeout)?
是 → 考虑 DoS 测试有效


🛠️ 组合测试

  • 提交 __proto__ → 检查是否持久化
  • 提交 constructor.prototype.polluted = true → 检查全局污染迹象
  • 利用 ["__proto__"] 数组索引写入,绕过某些黑名单
  • 使用深嵌套 JSON → 检测解析限制

🧯 4. 防御建议

安全措施
描述
输入校验
禁止解析中出现 __proto__constructor 等关键字段
使用深拷贝库
避免使用 Object.assign,推荐 structuredClone() 或安全库
限制嵌套层级
使用库如 json-parse-better-errorsajv 等做层级与结构校验
WAF 规则增强
对 JSON payload 关键字(如 "__proto__")做识别和阻断
最小权限原则
后端合并配置时应隔离用户与系统配置空间,避免全局污染


✅ 总结

项目
说明
安全点
JSON.parse本身安全
风险点
使用方式不安全:合并配置、渲染 HTML、未校验字段
探测方式
看输入格式、嵌套特征、行为响应变化
利用策略
利用字段污染 → 影响权限逻辑 / 全局变量 / DoS
防御建议
严格输入控制 + 合理合并方式 + 安全库使用


阅读原文:原文链接


该文章在 2025/4/24 9:23:14 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved