车联网安全WEB靶场实测
序言
车联网跟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 泄露、帐户访问
- 通过配置不当的 SSO 访问数百个关键任务内部应用程序,包括……
现代、创世纪
- 完全远程锁定、解锁、发动机启动、发动机停止、精确定位、闪光灯和仅使用受害者电子邮件地址的喇叭车辆
- 通过受害者电子邮件地址(姓名、电话号码、电子邮件地址、实际地址)进行完全远程帐户接管和 PII 披露
- 能够将用户锁定在远程管理他们的车辆之外,改变所有权
宝马、劳斯莱斯
- 公司范围内的核心 SSO 漏洞使我们能够像任何员工一样访问任何员工应用程序,使我们能够……
- 访问内部经销商门户,您可以在其中查询任何 VIN 号码以检索 BMW 的销售文件
- 代表任何员工访问锁定在 SSO 后面的任何应用程序,包括远程工作人员和经销商使用的应用程序
- 公司范围内的核心 SSO 漏洞使我们能够像任何员工一样访问任何员工应用程序,使我们能够……
法拉利
- 任何法拉利客户帐户的完全零交互帐户接管
- IDOR 访问所有法拉利客户记录
- 缺乏访问控制,允许攻击者创建、修改、删除员工“后台”管理员用户帐户和所有能够通过 CMS 系统修改法拉利拥有的网页的用户帐户
- 能够在 api.ferrari.com(rest-connectors)上添加 HTTP 路由并查看所有现有的 rest-connectors 和与之关联的秘密(授权标头)
斯皮龙
- 多个漏洞,包括:
- 拥有对全公司管理面板的完全管理员访问权限,能够向大约 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 并对车辆执行操作
- 通过不正确的 URL 解析接管客户帐户,允许攻击者完全访问受害者帐户,包括车辆门户
- 量产车 Telematics API 的完整内存泄露
复活者
- 完全超级管理访问权限,可以管理所有 Reviver 连接车辆的所有用户帐户和车辆。攻击者可以执行以下操作:
- 跟踪物理 GPS 位置并管理所有 Reviver 客户的车牌(例如,将车牌底部的标语更改为任意文本)
- 将任何车辆状态更新为“STOLEN”,更新车牌并通知当局
- 访问所有用户记录,包括人们拥有的车辆、他们的实际地址、电话号码和电子邮件地址
- 访问任何公司的车队管理功能,定位和管理车队中的所有车辆
- 完全超级管理访问权限,可以管理所有 Reviver 连接车辆的所有用户帐户和车辆。攻击者可以执行以下操作:
保时捷
- 能够通过影响车辆远程信息处理服务的漏洞发送检索车辆位置、发送车辆命令和检索客户信息
丰田
- 丰田金融的 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)
点击刷新车辆位置抓包
会看到回显了车辆的经纬度
{"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 端点
这个应该就是泄露邮箱和用户名id的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包。
把PUT
修改为DELETE
提示这是一个管理接口
尝试把接口中的user
修改为admin
DELETE /identity/api/v2/admin/videos/30 HTTP/1.1
成功删除自己的视频。
修改后面的ID值,成功删除其他人的视频。
挑战 8 - 免费获得一件物品
crAPI 允许用户退回他们订购的商品。您只需单击“退货订单”按钮,收到二维码并在 USPS 商店出示即可。要解决这个难题,您需要找到一种方法来获得您实际上并未退回的商品的退款。
购买完商品然后点击查看,可以看到一件商品,
点击可以查看商品详情
尝试修改,成功修改商品数量
挑战 9 - 将余额增加 1,000 美元或更多
首先修改商品数量
然后修改商品状态
在查看商品余额已经成功增加
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/
车联网安全WEB靶场实测的更多相关文章
- Web文件上传靶场 - 通关笔记
Web应用程序通常会提供一些上传功能,比如上传头像,图片资源等,只要与资源传输有关的地方就可能存在上传漏洞,上传漏洞归根结底是程序员在对用户文件上传时控制不足或者是处理的缺陷导致的,文件上传漏洞在渗透 ...
- web渗透漏洞靶场收集
最近将自己遇到过或者知道的web靶场链接奉上 0X01 DVWA 推荐新手首选靶场,配置简单,需下载phpstudy和靶场文件包,简单部署之后即可访问. 包含了常见的web漏洞(php的),每个漏洞分 ...
- 记一次metasploitable2内网渗透之samba服务的攻击
80端口中对应一些web靶场,在这里不记录 111端口的利用是向rpcbind服务的UDP套接字发送60字节载荷,便可填充目标内存,搞崩主机系统.在这里也不记录 Samba服务简介 Samba是在Li ...
- CTF丨从零开始搭建WEB Docker靶场
第十二届全国大学生信息安全竞赛即将开始,小伙伴们有报名参加的吗?大家在比赛前是否开始进行模拟演练了?今天,i春秋将与大家分享靶场搭建的相关内容,帮助大家更好的进行实操演练. 学习搭建Docker靶场之 ...
- (未完)经典Web漏洞实战演练靶场笔记
记录下自己写的经典Web漏洞靶场的write up,包括了大部分的经典Web漏洞实战场景,做个笔记. 0x01 任意文件下载漏洞 if(!empty($_GET['filename'])){ $fil ...
- 搭建DVWA Web渗透测试靶场
文章更新于:2020-04-13 按照惯例,需要的文件附上链接放在文首. 文件名:DVWA-1.9-2020.zip 文件大小:1.3 M 文件说明:这个是新版 v1.9 (其实是 v1.10开发版) ...
- Web For Pentester靶场(xss部分)
配置 官网:https://pentesterlab.com/ 下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso 安装方法:虚 ...
- 推荐一个Web漏洞靶场
https://github.com/zhuifengshaonianhanlu/pikachu 暂时先空着 安装好是这样的 博主先去玩了,回来再写博客,2333
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- 千万pv大型web系统架构,学习从点滴开始
架构,刚开始的解释是我从知乎上看到的.什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像.更抽象一点,说架构其 ...
随机推荐
- 强软弱引用,ThreadLocal和内存泄漏
强引用 写法:Object obj=new Object() 引用强度:最强 只要被引用着,就不会被gc(垃圾回收)回收掉. 软引用 写法:SoftReference<String> sr ...
- 833——B题题解
题目链接 题目大意: 给一串字符串(只包含0~9),定义一个最优子串的定义:如果该子串同字符种类数大于最最多字符出现数,那么这个子串可以被称为最优子串. 解题思路: 大眼一看这个数据范围他用n^2的算 ...
- 5.django-模型ORM
Django中内嵌了ORM框架,不需要直接编写SQL语句进行数据库的操作,通过定义模型类来完成对数据库中表的操作 O:Object,也就是类对象的意思 R:Relation,关系数据库中表的意思 M: ...
- 面试 个人摸底监测 考察考察JS三座⼤⼭ 1. 原型和原型链 2. 作⽤域与闭包 3. 异步和单线程 (第四天)
01.如何判断⼀个变量是不是数组? let arr = [1,2,3,4] function fun(){ return arr instanceof Array } 02.如何使⽤class实现继承 ...
- JSP利用AJAX实现页面即时校验验证码
在JSP页面实现验证码校验文章中当时是使用的Servlet类来进行的验证码校验,但是这种方式并不能即时校验,在正常情况下都是直接在用户输入之后就进行校验,这样对用户来说很方便的. AJAX 即&quo ...
- C温故补缺(三):存储类声明符(auto,register,extern,static)
auto,register,extern,static 四个存储类声明符,用于定义变量/函数的作用域和声明周期 ① auto:自动变量,即普通变量,在平时定义变量时会自动赋予其auto类型 被auto ...
- C++期末考试题库
哈尔滨商业大学计算机专业C++期末考试题库 下载:题库 示例: 一.单选题:1.能作为 C ++程序的基本单位是( C )A .字符 B .语句 C .函数 D .源程序文件2.程序中主函数的名字为( ...
- mongorestore target dump invalid CreateFile dump The system cannot find
问题 使用 mongorestore 指定 dump 文件夹,恢复数据报错. mongorestore target 'dump' invalid: CreateFile dump: The syst ...
- 关于CSDN微信登录接口的研究
代码 import requests import re from threading import Thread import time import requests from io import ...
- PostgreSQL:查询元数据(表 、字段)信息、库表导入导出命令
一.查询表.模式及字段信息 1.查询指定模式下的所有表 select tablename,* from pg_tables where schemaname = 'ods'; 2.查询指定模式下的表名 ...