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

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函数

1620963116_609def2cd7954f7e63a9e.png!small?1620963119426

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

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

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

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

1620963177_609def69d926b5fb903be.png!small?1620963179748

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

1620963201_609def81762aac615bf18.png!small?1620963202989

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

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

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

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

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

0x03验证

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

1620442977_6095ff61b0137982d1fe3.png!small?1620442976564

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

1620394728_609542e8d0c2e53d53d42.png!small?1620394727753

0x04 后记

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

jsonp 敏感信息泄露漏洞。

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

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论