一次实战之 JSONP 漏洞

安全 漏洞
JSONP注入是一个不太常见但影响非常广泛且极危险的漏洞,由于最近几年对JSON, web APIs以及跨域通信的需求增多,不得不引起我们的重视。

描述

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。

同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。

传入callback 值会在结果里面直接返回。因此,如果该参数过滤不严格。可以随便输入:callback值为:alert(‘1’);parseResponse 字符串。返回结果会打印个alert窗口,然后也会正常执行。

实际上就是由于服务器端对JSONP 的请求来源的检查不严格导致的;

攻击者模拟用户向有漏洞的服务器发送JSONP请求,然后就获取到了用户的某些信息,再将这些信息发送到攻击者可控的服务器

原理

JSONP的最基本的原理是:动态添加一个

过程

首先,找到存在该漏洞地址:

http://IP:9081/api/v0/sqjr/resident/service/BannerInfo.queryRecommendList.json?province=%E6%B5%99%E6%B1%9F%E7%9C%81&city=%E6%9D%AD%E5%B7%9E%E5%B8%82&jsoncallback=jsonp_1605671133151_19776

修改请求包信息,在返回值开头中可见calmness;

传过去的calmness就是函数名,服务端返回的是一个函数调用,可以理解为:evil就是一个函数,(["customername1","customername2"])就是函数参数,网站前端只需要再编写代码处理函数返回的值即可。

继续:

如果我们修改jsoncallback的值为其他值,此处的返回值也会相应改变。我们可以劫持jsoncallback参数,自己构造jsoncallback处理函数,受害者点击我们伪造的链接后,向jsonp接口发起请求,请求得到数据的处理方式由我们自己的jsoncallback处理函数处理,由此可以达到劫持目的

进行POC的编写或者进行淘金

当然,还有绕过token防护进行csrf攻击;Referer 头的绕过等等;

修复建议

json正确的http头输出尽量避免跨域的数据传输,对于同域的数据传输使用xmlhttp的方式作为数据获取的方式,依赖于javascript在浏览器域里的安全性保护数据。如果是跨域的数据传输,必须要对敏感的数据获取做权限认证。

 

责任编辑:赵宁宁 来源: 嘶吼网
相关推荐

2021-11-11 16:14:04

Kubernetes

2014-07-17 15:31:48

2011-06-28 10:41:50

DBA

2021-12-27 10:08:16

Python编程语言

2020-10-24 13:50:59

Python编程语言

2020-08-28 08:55:32

商城系统高并发

2021-02-25 10:00:19

企业安全互联网云平台安全

2019-05-29 08:04:44

Zookeeper迁移扩展

2020-10-18 12:53:29

黑科技网站软件

2020-03-10 07:51:35

面试讽刺标准

2021-03-02 20:42:20

实战策略

2015-02-27 10:14:33

2020-10-30 14:11:38

服务器SDK堆栈

2021-02-11 14:06:38

Linux内核内存

2017-01-23 12:40:45

设计演讲报表数据

2020-03-18 13:07:16

华为

2019-02-20 09:29:44

Java内存邮件

2014-08-06 11:24:24

Elasticsear劫持挂马

2017-02-28 11:13:36

华为

2011-07-21 21:01:37

诺基亚塞班苹果
点赞
收藏

51CTO技术栈公众号