从公开信息到远程解锁:电动滑板车安全漏洞引发关注!
远程解锁电动滑板车2026 年 8 月 21 日阅读时长 9 分钟。注意为保护该公司所有可能指向该公司的信息都替换成了虚假示例。域名 electricscootercompany.com.br、应用程序包以及用户详细信息别名、姓名和电子邮件均为虚构与真实公司信息无关。一切始于一篇新闻报道。一家公司在当地城市投放了一批电动滑板车多数人视其为新出行方式而有人关注到这是一群连接互联网、后端系统尚未被探查过的设备。首先要了解两件事公司名称和普通用户使用服务的方式。文章提到公司名称通过谷歌搜索找到其网站使用流程为打开手机应用程序扫描滑板车二维码付费解锁车辆骑行。这是常规使用流程有人想了解背后运作机制。步骤 1侦察对与 electricscootercompany.com.br 相关内容进行梳理通过子域枚举发现很多子域名如 www、app、api 等。并非所有都是实际可用应用程序app、membro 等基本指向同一页面引导用户去应用商店可探索新内容不多。dev 主机返回 500 错误设了 PHP 会话 cookie 但无可用信息。validate 返回 Conta não localizada.即“未找到账户”当时不知其所需参数记录信息后继续探索。有三个子域名较突出www.electricscootercompany.com.br 是 WordPress 营销网站api.electricscootercompany.com.br 是客户端使用的 REST APIpainel.electricscootercompany.com.br 是供运营人员使用的 Angular 面板。网站无链接指向该面板是通过枚举发现的没链接不代表受严格保护。步骤 2无需登录即可访问面板该面板对任何人可加载是生产环境的 Angular 应用程序。下载 32 个 JavaScript 块并研究发现 83 个端点涉及用户和权限、车辆和地图等方面。这意识到目标价值但仍无法访问。尝试访问约 38 个受保护路由因无有效会话每个请求都返回 HTTP 401 错误。尝试的很多方法都没奏效如直接访问路由被身份验证拦截未签名的管理员 JWT 被后端拒绝等。身份验证在直接攻击面前表现良好应用程序指明找到真实用户并获取其密码的途径。步骤 3WordPress 提供首个线索公共的 WordPress REST API 允许列出作者信息响应显示用户 ID 为 1公开名称为 admin别名是 electricscootercompany。通常是普通 WordPress 枚举操作但这里可在运营面板上用相同标识符尝试。登录时根据输入内容不同有不同响应存在的身份 错误的密码 → Senha inválida即“密码无效”不存在的身份 → E-mail não encontrado即“未找到电子邮件”。后端表明该身份在运营系统中也存在将普通枚举操作变成有价值的目标列表。步骤 4暴力破解确认用户身份后对登录进行暴力破解。系统无重复尝试限流最终找到有效密码成功登录面板。这揭示问题根本原因因无真正速率限制知道用户身份就能通过猜测密码创建有效会话。此后操作基于在 Burp 中捕获的真实会话。解码后的 JWT 显示账户信息级别 1000 表示管理员角色令牌有效期约 950 天获取会话后除非有人特意终止会话将在数年内一直有效。步骤 5面板不再只是设想拥有有效会话后情况改变之前返回 401 错误的路由现在返回真实运营数据。捕获的请求中记录 168 个第一方请求涉及 118 种不同的主机、方法和路径组合。面板提供多种内容的读取权限如 /mapas/__veiculos 车队地图、/docas 停靠点信息等。地图将数字信息与实际运营联系起来点击标记可查看车辆详细信息。一些响应数据量很大显示拥有的访问权限Burp 在响应数据量约 3 KB 时会截断记录的状态、路径和大小信息准确。步骤 6不只是查看数据想知道面板能否写入数据会话显示可对车辆记录、用户账户、代金券批次进行 PUT 调用还能在测试账户上切换免费骑行标志可更改业务规则和记录。车辆注册表可查找车队中滑板车并打开编辑表单表单有“解锁”“锁定”和“重启 IoT”按钮操作会作用于物理设备。IoT 模块会发送命令后端会响应确认信息。仅对一辆车测试表明被盗用的管理员账户能在任何地方解锁滑板车并随时锁定。让朋友在发送命令瞬间拍摄滑板车结果成功滑板车解锁可骑行无需付费、扫描二维码或触碰。未对多辆车自动化测试也未触碰可能导致危险的操作一次操作证明 Web 面板可控制实际硬件设备。值得记录的死胡同拦截移动应用程序安卓应用程序用 Flutter 开发很多逻辑编译在 libapp.so 中。多次尝试才成功拦截会话很多代理和证书组合无法获取想要的流量。捕获流量后33 个流程显示 validateApp 保护机制依赖静态头部和承载令牌有助于绘制 API 地图但仍需有效令牌这种绕过方法不能进入面板。大范围地图查询正常边界框查询可返回车辆位置和电池信息扩大查询范围到整个国家大小时后端返回 403 错误要求重新登录此后相同 JWT 对之前可访问的端点也返回 403 错误。大范围查询触发防御机制导致会话失效可能是异常过滤器或令牌撤销机制这是后端有效防御情况之一。行程历史记录向历史记录端点发送车辆引用信息得到空集或 400 错误无法访问他人行程记录但响应泄露了一些内部类名和 PHP/ORM 消息。SQL 注入和伪造 JWT尝试获取凭证前尝试 SQL 注入和伪造 JWT 未成功登录字段无法 SQL 注入未签名或篡改的令牌会被拒绝。最终获得的访问权限并非来自 SQL 注入或 JWT 漏洞而是枚举、弱密码和过高权限设置。漏洞链的根本原因这一系列问题由身份验证、认证和权限管理方面的问题累积导致WordPress 暴露用户信息登录确认用户存在重复尝试允许暴力破解凭证授予直接的 1000 级访问权限管理员令牌有效期约 950 天面板集中了数据、更改和 IoT 命令最终可远程解锁滑板车。最大问题是缺乏有效备份机制密码是开放互联网与控制物理硬件按钮间的唯一防线过程中无二次登录要求对 IoT 命令无额外确认。实际影响凭借被盗用的管理员凭证可访问运营面板、车辆等地图、运营拓扑结构和地理围栏信息、车辆和 IoT 设备清单、广泛的用户数据和财务模块、编辑测试账户记录和福利、远程向测试滑板车发送“打开”和“关闭”命令。在实际攻击中可能导致未经授权的车队使用、欺诈、运营损失、用户数据泄露以及间接的物理风险且可通过一个凭证大规模实施。结论远程解锁滑板车途径并非始于复杂逆向工程或罕见加密漏洞而是始于被遗忘的子域名、公开的用户信息和两条不同的错误消息。复杂攻击尝试失败真正奏效的是明显攻击方式已知用户身份、易猜测密码和缺乏第二道防线足以将 Web 访问权限转化为对物理设备的控制权。