返回

文章详情

远程解锁电动滑板车

Hacker News2026年8月21日 21:32

注意:为了保护公司,我用虚构的例子替换了任何可能指向公司的信息。域名 electricscootercompany.com.br 、应用包以及用户细节(slug、姓名和电子邮件)都是虚构的,与真实公司无关。这一切始于一篇新闻文章。一家公司刚在我的城市投放了一批电动滑板车。大多数人看到了一种新的城市出行方式。而我看到的是一整套尚未被触及的互联网连接设备。首先,我需要两件事:这家公司是什么,以及这个服务对普通用户的工作方式。名称在文章中直接给出,快速搜索后我找到了他们的网站,网站阐述了流程:在手机上打开应用;扫描滑板车的二维码;支付以解锁车辆;骑行。这是所有用户的快乐路径。我想看看它背后发生了什么。第一步:侦查我开始对与 electricscootercompany.com.br 相关的一切进行了映射。子域名枚举列出了很多,包括: www、app、api、privacidade、privacidade2、dev、membro、vouchers、planos、validate、painel,并非所有这些都是实际应用。 app、membro、vouchers 和 planos 都基本上提供相同的页面,只是将你推向应用商店。很多名称,但并没有太多新的内容可看。dev 主机返回了 500,设置了一个 PHP 会话 cookie,但没有让我使用的东西。validate 返回了 Conta não localizada。 // “账户未找到。”,虽然我还不知道它想要哪个参数。我将这些记下来并继续进行。有三件事引起了我的注意:www.electricscootercompany.com.br:WordPress 营销网站;api.electricscootercompany.com.br:客户使用的 REST API;painel.electricscootercompany.com.br:用于操作者的 Angular 面板。网站上没有任何链接到该面板。我只通过枚举发现了它。仅仅因为某些东西没有链接并不意味着它被锁定。第二步:在未登录的情况下打开面板面板对任何人都可以加载:一个生产的 Angular 应用。我下载了所有 32 个 JavaScript 块,并深入研究了这些文件,其中找到了 83 个端点,涉及:用户与权限;车辆与地图;行程激活与最终化;物联网设备;车库、停靠点和地理围栏;代金券、交易与财务模块。这让我知道目标的丰富程度,但是并没有取得任何进展。我在约 38 个保护路由中遇到了无效会话,每一个都给我返回同样的信息:HTTP 401。我尝试的大部分内容都不起作用:直接路由访问:被认证阻止;未签名的管理员 JWT:被后端拒绝;篡改 token 声明:未产生有效会话;登录时的 SQL 注入:对认证字段运行 SQLMap,未找到可注入参数;报告端点:php/report.php 返回空的 500;经典的暴露文件:.git、.env 和源映射无法访问。认证在直接访问方面表现良好。并且应用已经指向了更简单的道路:找到一个真实用户并攻击他们的密码。第三步:WordPress 揭露第一部分公共的 WordPress REST API 高兴地让我列出了作者:GET /wp-json/wp/v2/users GET /wp-json/wp/v2/users/1?context=view 响应给出了用户 ID 1,公开名称为 admin,slug 为 electricscootercompany。通常这只是普通的 WordPress 枚举。在这里,我可以取用相同的标识符并尝试在操作面板中使用。根据我输入的内容,登录给出了不同的答案:已存在的身份 + 错误密码 → “Senha inválida” // “密码无效” 不存在的身份 → “E-mail não encontrado” // “电子邮件未找到” 所以我不必怀疑 electricscootercompany 是否只是一个博客作者。后端直接告诉我同一身份在操作系统中也存在。这将通用枚举转换为有价值的目标列表。第四步:暴力破解在确认了用户后,我对登录进行了暴力破解。没有任何限制重复尝试,而最终找到了一个有效的密码,因此面板登录成功。这部分真正解释了根本原因。没有真正的限速,知道的一个身份就足以将猜测循环转换为有效会话。之后的所有操作都依赖于我在 Burp 中捕获的真实会话。JWT 解码为一个账户,内容为:{ "data" : { "PK_Usuario" : 2 , "email" : "electricscootercompany" , "nome" : "ElectricScooterCompany" , "nivel" : 1000 , "fk_empresa_grupo" : 1 } } 1000 级是管理员角色。并且令牌的有效期约为 950 天,因此一旦抓取会话将在多年内继续有效,除非有人特意去销毁它。第五步:面板不再是假设有了有效会话,一切瞬间发生了变化。以前给我 401 的路由现在返回真实的操作数据。在捕获中,我记录了 168 个第一方请求,跨越 118 个独特的主机/方法/路径组合。面板给我提供了对以下项目的读取权限:/mapas/__veiculos 的车队地图;/docas 的停靠点;车库和操作基础设施;地理围栏。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡