当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2016-0188915

漏洞标题:基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

相关厂商:轻客智慧

漏洞作者: 老中医

提交时间:2016-03-25 14:46

修复时间:2016-05-09 14:46

公开时间:2016-05-09 14:46

漏洞类型:设计不当

危害等级:高

自评Rank:15

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-03-25: 积极联系厂商并且等待厂商认领中,细节不对外公开
2016-05-09: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

最近想买个自行车上下班的时候就不用挤公交了顺便还能锻炼身体.发现现在出现好多智能自行车,但是多数就是些写个 app 就披上智能的外衣了,除了增加一些非必要的功能貌似也不是真智能.无意中发现轻客的智慧电单车的宣传,其描述的总线系统/多个传感器/voleUP!等貌似很屌,准备剁手体验下,但是没有货.于是就先预热研究下其安全性,也算是对智能自行车攻击的一次探索.

详细说明:

attack surface:
先画一个模型图,之后就按模型图逐步分析.(bike 和 server 间的通信通过其采购 gps 和联通物联网服务,猜测其为 GPS 定位,GPRS 回传数据.)

model.png


---
attack surface : app -- bike
因为没有车还没有买( jd 上缺货... ),所以先从 app 开始下手.因为app 和车之间通信是使用的协议是 bluetooth low energy,所以要梳理下 ble 相关知识.
简单来说,手机上的 app 就是 ble 的 gatt client,而自行车上的固件就是 gatt 的 server,他们之间通过基本数据单元Characteristic交互数据,示意图如下

GATT2.png


BLE是蓝牙4.0的核心Profile,主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备.Android 4.3才开始提供BLE API.
一般来说,Characteristic是手机与BLE终端交换数据的关键,Characteristic有较多的跟权限相关的字段,例如PERMISSION和PROPERTY,而其中最常用的是PROPERTY.
一个BLEServer设备可以包含多个服务(BluetoothGattService),每个服务又包含很多的特征(BluetoothGattCharacteristic),每个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value.
尝试分析 app 看是否能够通过伪造 ble 通信来控制车辆(读取写入数据),从逆向代码来看其自定义了三个 uuid.

uuid.png


而且在写入Characteristic使用了 des 加密.

encry.png


16位密钥为 CarBluetoothNumber 后8位与"04030915" 拼接.

getKey.png


进入这个阶段貌似陷入僵局了,因为CarBluetoothNumber这个参数是对我来说是未知的.这个加密从现阶段来看是个不错的安全措施了,转变思路进入下一项分析.

漏洞证明:

attack surface : app -- server
这阶段先对接口漏洞进行测试,从 app 分析来看接口不多:

url.png


存在漏洞的接口:
- sql注入/越权查询其他车辆信息
**.**.**.**/getBikePosition?carNumber=
- sql注入/任意密码修改/任意phone修改/任意carBluetoothNumber修改...总之你有个 update 的注入基本可以随便整了.
**.**.**.**/updateUser?userID=977&sex=&phone=&desKey=&carControllerNumber=&nickname=admin&isForbidden=0&carNumber=&isConnectedBluetooth=0&mood=&userName=&carBluetoothNumber=&password=
- sql注入
**.**.**.**/userLogin?password=&userName=
- 文件上传(只能传 html,其他 shell 会被阿里云干掉)
**.**.**.**/uploadFile/

[18:03:08] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Nginx
back-end DBMS: MySQL 5.0.11
[18:03:08] [INFO] fetching tables for database: 'bike'
[18:03:08] [INFO] fetching number of tables for database 'bike'
[18:03:08] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval
[18:03:08] [INFO] retrieved: 13
[18:03:09] [INFO] retrieved: attention
[18:03:17] [INFO] retrieved: bluetooth
[18:03:28] [INFO] retrieved: carNumberMapping
[18:03:43] [INFO] retrieved: collection
[18:03:51] [INFO] retrieved: homeInfo
[18:03:59] [INFO] retrieved: news
[18:04:03] [INFO] retrieved: newsContent
[18:04:10] [INFO] retrieved: note
[18:04:14] [INFO] retrieved: notice
[18:04:18] [INFO] retrieved: route
[18:04:23] [INFO] retrieved: user
[18:04:27] [INFO] retrieved: version
[18:04:34] [INFO] retrieved: zan
Database: bike
[13 tables]
+------------------+
| user |
| version |
| attention |
| bluetooth |
| carNumberMapping |
| collection |
| homeInfo |
| news |
| newsContent |
| note |
| notice |
| route |
| zan |
+------------------+


通过上面的注入和越权基本可以收集到车辆大体数据,比如 carnumber / location / imei ...

list.png


为了更直观的体现数据将json 导入到全国散点图中,发现自行车最多的还是北上广.(根据资料显示定位误差大概在10-20m,即使不偷车光拆电池也有700rmb 了.)

bikes.jpg


到这里前面的CarBluetoothNumber 和其 position 也得手了,剩下的就找一辆车来继续测试了. to be continue .
----
测试过程中发现一些其他的料:

无线网络
Tsinova/Tsinova2015
Tsinova-5G/Tsinova2015
Tsinova-Guest/Tsinovaguest
Tsinova-5G-Guest/Tsinovaguest
拉勾网:
hr@**.**.**.**/tsinova
大街网:
hr@**.**.**.**/tsinova tsi2014


qkweixin.png


修复方案:

版权声明:转载请注明来源 老中医@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:15 (WooYun评价)