漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
2016-03-25: 积极联系厂商并且等待厂商认领中,细节不对外公开
2016-05-09: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
最近想买个自行车上下班的时候就不用挤公交了顺便还能锻炼身体.发现现在出现好多智能自行车,但是多数就是些写个 app 就披上智能的外衣了,除了增加一些非必要的功能貌似也不是真智能.无意中发现轻客的智慧电单车的宣传,其描述的总线系统/多个传感器/voleUP!等貌似很屌,准备剁手体验下,但是没有货.于是就先预热研究下其安全性,也算是对智能自行车攻击的一次探索.
详细说明:
attack surface:
先画一个模型图,之后就按模型图逐步分析.(bike 和 server 间的通信通过其采购 gps 和联通物联网服务,猜测其为 GPS 定位,GPRS 回传数据.)
---
attack surface : app -- bike
因为没有车还没有买( jd 上缺货... ),所以先从 app 开始下手.因为app 和车之间通信是使用的协议是 bluetooth low energy,所以要梳理下 ble 相关知识.
简单来说,手机上的 app 就是 ble 的 gatt client,而自行车上的固件就是 gatt 的 server,他们之间通过基本数据单元Characteristic交互数据,示意图如下
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.
而且在写入Characteristic使用了 des 加密.
16位密钥为 CarBluetoothNumber 后8位与"04030915" 拼接.
进入这个阶段貌似陷入僵局了,因为CarBluetoothNumber这个参数是对我来说是未知的.这个加密从现阶段来看是个不错的安全措施了,转变思路进入下一项分析.
漏洞证明:
attack surface : app -- server
这阶段先对接口漏洞进行测试,从 app 分析来看接口不多:
存在漏洞的接口:
- 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/
通过上面的注入和越权基本可以收集到车辆大体数据,比如 carnumber / location / imei ...
为了更直观的体现数据将json 导入到全国散点图中,发现自行车最多的还是北上广.(根据资料显示定位误差大概在10-20m,即使不偷车光拆电池也有700rmb 了.)
到这里前面的CarBluetoothNumber 和其 position 也得手了,剩下的就找一辆车来继续测试了. to be continue .
----
测试过程中发现一些其他的料:
修复方案:
版权声明:转载请注明来源 老中医@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝
漏洞Rank:15 (WooYun评价)