渗透笔记之JSONP劫持发现 – 作者:g01niw

26次阅读
没有评论

0x01 前言

记录一次JSONP劫持的发现过程和一些思考,和大家一起分享,一起进步

0x02 发现

通过爬取页面获取到可疑的url

xxx.xxx.xxx.com/recom?appkey=xxx&adspot=xxx&max_behot_time=0&max_count=5&tag=0&columns=0&callback=uarJsonCa

llback 看到了这里的callback函数

渗透笔记之JSONP劫持发现 - 作者:g01niw

根据url的命名可以基本上推断出来这个服务应该是给目标站推送一些数据,其中主站获取到这些数据之后再回填到页面上,我们可以仔细的观察这个get请求的url

这里有appkey,adspot,max_behot_time,max_count,tag,columns还有callback这四个参数,其中最引人注目的就是callback参数后面拼接的方法,非常明显这里使用了JSONP函数

下面通过修改传参观察数据返回:

1.修改appkey的值,返回的数据有变动但是这个API应该主要用于推送热点数据,我在不传递这个值的时候也能获取到返回,这个值可能是无意义的

渗透笔记之JSONP劫持发现 - 作者:g01niw

2.修改adspot的值,我获取到了一个错误返回

渗透笔记之JSONP劫持发现 - 作者:g01niw

同时我根据这个值推测出不同的adspot的值对应着的是推送到不同的目标站点的数据,这个值是必传的且相当于key值

3.修改max_behot_time的值结果和修改appkey的值一样,可能同样代表着某种规则限定但是并不影响服务返回

4.修改max_count的值服务返回数据的数量会产生变化,当修改到一定数量上限的时候数据就不发生变化了,推测每天的热点数据应该是从数据池中取出来的,池子的大小是固定的所以这里体现出的就是数据不再变化

5.修改columns的值数据对应也会发生变化,推测其含义可能是分页页数

6.callback传参,这里很明显是使用了jsonp函数 通过页面上编写callback函数来调用对应的服务做数据填充

0x03验证

编写函数命名为callback之后的传参

渗透笔记之JSONP劫持发现 - 作者:g01niw

获取到了对应的数据(这里只是为做演示获取到了数据的行数)

渗透笔记之JSONP劫持发现 - 作者:g01niw

0x04 后记

jsonp 本身不是漏洞,它仅仅是一种兼容性非常棒的跨域通信方式,那么是么时候会被认为是漏洞呢?当 jsonp 的返回数据为用户敏感数据,并且这个 jsonp 的检验不严格导致可以被外部利用,这时候就可以称之

jsonp 敏感信息泄露漏洞。

技术在不断发展的同时,攻防的手段会变得更加的丰富,就像一场博弈,站在攻防两面的我们就是这场博弈的

参与者,那谁又会是最终的胜利者呢?

来源:freebuf.com 2021-05-07 22:15:53 by: g01niw

正文完
 0
评论(没有评论)