JSONP是什么
1 | JSONP 是 JSON with padding(填充式 JSON 或参数式 JSON)的简写 |
为何会产生跨域
同源策略
1 | 同源策略即:同一协议,同一域名,同一端口号。当其中一个不满足时,我们的请求即会发生跨域问题。 |
jsonp跨域-解决同源策略限制
1 | 由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解决方案。JSONP实现跨域请求的原理简单的说,就是动态创建<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。jsonp 劫持就是攻击者获取了本应该传给网站其他接口的数据 |
如何实现跨域
1 | 不管是我们的script标签的src还是img标签的src,或者说link标签的href他们没有被同源策略所限制,比如我们有可能使用一个网络上的图片,就可以请求得到 |
jsonp漏洞利用过程和危害
1 | JSONP 由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的 JSON 数据。 |
服务端代码,保存为test2.php
1 | <?php |
客户端代码,保存为4.html
1 | <!DOCTYPE html> |
跨域劫持成功
访问客户端4.html,成功通过jsonp跨域劫持到服务器端json数据
测试利用
动态创建script标签,设置其src为目标服务器地址即存在漏洞地址,回调函数在src中设置
1 | <!DOCTYPE html> |
跨域防护
1 | 严格安全的实现 CSRF 方式调用 JSON 文件:限制 Referer 、部署一次性 Token 等。 |