序言

车联网跟WEB安全相关联的地方不多,车联网更多还是基于IOT安全。但是车联网安全也和WEB安全有密切相关的地方,比如云安全、API安全等。近两年的智能网联汽车从IVI(车载信息娱乐系统)、OTA服务器、控车APP、控车小程序等大量依赖各种API来控制和下发指令。这些API如果没有做好安全评估可能会导致攻击面的产生给汽车造成安全风险。

忽视API安全所造成的的安全风险

2023年1月3日Sam Curry领导的研究团队披露了将近20家汽车制造商和服务包含API安全漏洞,这些漏洞可能允许黑客执行恶意活动,从解锁、启动和跟踪汽车到暴露客户的个人信息。这些安全漏洞影响了知名品牌,包括宝马、劳莱斯、梅赛德斯-奔驰、法拉利、保时捷、捷豹、路虎、福特、起亚、本田、英菲尼迪、日产、讴歌、现代、丰田和创世纪。

漏洞摘要

  • 起亚、本田、英菲尼迪、日产、讴歌

    • 完全远程锁定、解锁、发动机启动、发动机停止、精确定位、闪光灯和仅使用 VIN 号的车辆鸣喇叭
    • 通过 VIN 号码(姓名、电话号码、电子邮件地址、实际地址)进行完全远程帐户接管和 PII 披露
    • 能够将用户锁定在远程管理他们的车辆之外,改变所有权
      • 特别是对于起亚,我们可以远程访问 360 度摄像头并查看汽车的实时图像
  • 奔驰

    • 通过配置不当的 SSO 访问数百个关键任务内部应用程序,包括……
      • SSO 背后的多个 Github 实例
      • 公司范围内的内部聊天工具,能够加入几乎任何频道
      • SonarQube,詹金斯,杂项。搭建服务器
      • 用于管理 AWS 实例的内部云部署服务
      • 内部车辆相关 API
    • 多个系统上的远程代码执行
    • 内存泄漏导致员工/客户 PII 泄露、帐户访问
  • 现代、创世纪

    • 完全远程锁定、解锁、发动机启动、发动机停止、精确定位、闪光灯和仅使用受害者电子邮件地址的喇叭车辆
    • 通过受害者电子邮件地址(姓名、电话号码、电子邮件地址、实际地址)进行完全远程帐户接管和 PII 披露
    • 能够将用户锁定在远程管理他们的车辆之外,改变所有权
  • 宝马、劳斯莱斯

    • 公司范围内的核心 SSO 漏洞使我们能够像任何员工一样访问任何员工应用程序,使我们能够……
      • 访问内部经销商门户,您可以在其中查询任何 VIN 号码以检索 BMW 的销售文件
      • 代表任何员工访问锁定在 SSO 后面的任何应用程序,包括远程工作人员和经销商使用的应用程序
  • 法拉利

    • 任何法拉利客户帐户的完全零交互帐户接管
    • IDOR 访问所有法拉利客户记录
    • 缺乏访问控制,允许攻击者创建、修改、删除员工“后台”管理员用户帐户和所有能够通过 CMS 系统修改法拉利拥有的网页的用户帐户
    • 能够在 api.ferrari.com(rest-connectors)上添加 HTTP 路由并查看所有现有的 rest-connectors 和与之关联的秘密(授权标头)
  • 斯皮龙

  • 福特

    • 量产车 Telematics API 的完整内存泄露
      • 披露客户 PII 和访问令牌,以便在车辆上跟踪和执行命令
      • 公开用于与远程信息处理相关的内部服务的配置凭证
      • 能够对客户帐户进行身份验证并访问所有 PII 并对车辆执行操作
    • 通过不正确的 URL 解析接管客户帐户,允许攻击者完全访问受害者帐户,包括车辆门户
  • 复活者

    • 完全超级管理访问权限,可以管理所有 Reviver 连接车辆的所有用户帐户和车辆。攻击者可以执行以下操作:
      • 跟踪物理 GPS 位置并管理所有 Reviver 客户的车牌(例如,将车牌底部的标语更改为任意文本)
      • 将任何车辆状态更新为“STOLEN”,更新车牌并通知当局
      • 访问所有用户记录,包括人们拥有的车辆、他们的实际地址、电话号码和电子邮件地址
      • 访问任何公司的车队管理功能,定位和管理车队中的所有车辆
  • 保时捷

    • 能够通过影响车辆远程信息处理服务的漏洞发送检索车辆位置、发送车辆命令和检索客户信息
  • 丰田

    • 丰田金融的 IDOR,披露任何丰田金融客户的姓名、电话号码、电子邮件地址和贷款状态
  • 捷豹、路虎

    • 用户帐户 IDOR 泄露密码哈希、姓名、电话号码、实际地址和车辆信息
  • SiriusXM 联网车辆服务

    • 泄漏的 AWS 密钥具有完整的组织读/写 S3 访问权限,能够检索所有文件,包括(似乎是)用户数据库、源代码和 SiriusXM 互联车辆服务的配置文件

更为详细的报告可以查看原版报告 https://samcurry.net/web-hackers-vs-the-auto-industry/ 这里就不详细说明了,后续可能会对漏洞风险点做一个详细梳理。

靶场安装

我们言归正传,开始我们的主题内容《靶场实测》。

首先安装docker,然后依次执行如下命令即可完成安装。

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的用户

打开主页绑定车辆(邮件在http://localhost:8025)

点击刷新车辆位置抓包
车联网安全WEB靶场实测-小白菜博客
会看到回显了车辆的经纬度

{"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 - 访问其他用户的维修报告

在主页点击报修,可以看到一个提交报修信息表单
车联网安全WEB靶场实测-小白菜博客

我们提交之后查看响应包可以得到我们的报修信息链接http://localhost:8888/workshop/api/mechanic/mechanic_report?report_id=1,修改链接后面的report_id值即可查看其他车辆的报修信息。
车联网安全WEB靶场实测-小白菜博客

挑战 3 - 重置不同用户的密码

在注册的时候我们可以得知用户登录是通过邮箱地址和密码进行登录。在车辆经纬度信息泄露中我们点击社区响应包里面可以看到其他用户的邮箱地址。

既然得到了用户的邮箱地址,那么我们就可以对用户进行找回密码操作。

尝试爆破验证码几次之后发现存在限制。

尝试修改接口POST /identity/api/auth/v2/check-otpV3修改为V2进行爆破。

挑战 4 - 找到泄露其他用户敏感信息的 API 端点

这个应该就是泄露邮箱和用户名id的API/community/api/v2/community/posts/recent

挑战 5 - 找到泄漏视频内部属性的 API 端点

这个应该就是上传视频泄露了内部的参数名conversion_params,然后可以利用这个参数名进行命令执行,没复现成功命令执行。

挑战 6 - 使用“接触机械”功能执行第 7 层 DoS

这个是在维修提交那里。

repeat_request_if_failed修改为truenumber_of_repeats修改成大数值。

Service unavailable. Seems like you caused layer 7 DoS :)

挑战 7 - 删除其他用户的视频

编辑视频名字可以抓到一个PUT包。

PUT修改为DELETE提示这是一个管理接口

尝试把接口中的user修改为admin

DELETE /identity/api/v2/admin/videos/30 HTTP/1.1

成功删除自己的视频。

修改后面的ID值,成功删除其他人的视频。

挑战 8 - 免费获得一件物品

crAPI 允许用户退回他们订购的商品。您只需单击“退货订单”按钮,收到二维码并在 USPS 商店出示即可。要解决这个难题,您需要找到一种方法来获得您实际上并未退回的商品的退款。
购买完商品然后点击查看,可以看到一件商品,

点击可以查看商品详情
车联网安全WEB靶场实测-小白菜博客
尝试修改,成功修改商品数量

挑战 9 - 将余额增加 1,000 美元或更多

首先修改商品数量
车联网安全WEB靶场实测-小白菜博客
然后修改商品状态

在查看商品余额已经成功增加

SSRF

SSRF在车辆维修提交处

抓包,然后修改mechanic_api参数

成功触发SSRF

在线靶场和参考答案

后面跟API安全关系不多就不写了,如果不想安装docker也可以通过在线靶场进行测试,参考答案可以参考官网的文档

参考:

https://www.bleepingcomputer.com/news/security/toyota-mercedes-bmw-api-flaws-exposed-owners-personal-info/
https://samcurry.net/web-hackers-vs-the-auto-industry/