引言
McHire 是一个聊天机器人招聘平台,被 90% 的麦当劳特许经营店使用。求职者会与一个名叫 Olivia 的机器人对话,这个机器人由名为 Paradox.ai 的公司开发,用于收集他们的个人信息、工作班次偏好,并进行性格测试。我们是在 Reddit 上看到一些用户抱怨该机器人 回答毫无逻辑 后注意到这一点的。
在进行了几个小时的初步安全审查后,我们发现了两个严重问题:McHire 为餐厅业主提供的管理界面接受默认凭据 123456:123456
,以及一个内部 API 上存在不安全的直接对象引用(IDOR)漏洞,使我们可以访问任意联系人和聊天记录。这两个问题结合在一起,使我们以及任何拥有 McHire 账号并能访问任何收件箱的人,都可以获取超过 6400 万名求职者的个人数据。
求职申请
我们首先尝试在当地的麦当劳申请一份工作。McHire 在 https://jobs.mchire.com/ 上有一个面向消费者的网站,可以轻松查找附近的招聘信息。我们立即被引导到 Olivia,那位帮助我们填写邮箱、电话号码以及可工作班次的机器人,并立刻进入了下一阶段:性格测试!
McHire 性格测试
这项性格测试是由 Traitify.com 提供支持的,我们被要求判断诸如“喜欢加班”这样的句子是否符合自己,选项为 Me(是我) 或 Not Me(不是我)。对于倾向雇主利益的问题,我们大概应该选择 Me,对于暗示好争辩或具有攻击性的问题则选 Not Me,虽然不难猜,但整个过程仍然显得相当怪异。
不幸的是,完成这一步后我们就陷入了停滞,似乎在等待人工审核。我们尝试对 Olivia 聊天机器人进行提示注入(prompt injection),这很导致审核不通过,但看起来它被锁定在一组预设回应中,或者采用了类似的机制,且并没有为求职者开放什么有趣的 API。
登录
我们注意到餐厅业主可以通过 https://www.mchire.com/signin 登录以查看应聘者。尽管该应用强制要求使用麦当劳的单点登录(SSO),但其中有一个较小的链接写着“Paradox 团队成员”,引起了我们的注意。
我们几乎没怎么思考,就输入了“123456”作为用户名,“123456”作为密码,结果惊讶地发现我们竟然直接登录成功了!
McHire 用户管理界面
结果发现,我们变成了 McHire 系统中一个测试餐厅的管理员。我们可以看到该餐厅的所有“员工”实际上都是 McHire 背后的公司 Paradox.ai 的员工。这对我们来说是个好消息,因为我们现在可以看到这个应用是如何运作的,但同时也有些令人失望,因为我们还没有证明任何实际的信息保密性或完整性受到影响。
申请我们的职位
我们决定申请该账户已经创建的一个测试岗位,看看在“另一端”会是什么样子。餐厅可以查看与 “Olivia” 进行中的所有对话,并在应聘者进入特定阶段(如完成性格测试)时进行人工干预。
餐厅视角下的我们的求职对话
在查看我们的测试对话时,我们注意到了一个有趣的 API,用于获取求职者信息:PUT /api/lead/cem-xhr
,这似乎是通过 XHR 请求代理到某种客户或求职者体验管理器(CEM)。该请求的主要参数是聊天的 lead_id
,我们测试申请者的 ID 大约是 64,185,742
。我们尝试将这个数字递减,结果立刻就看到了另一位麦当劳求职者的个人身份信息(包括未脱敏的联系方式)!
我们很快意识到,这个 API 允许我们访问所有曾在麦当劳申请过工作的聊天记录。返回的信息包括:
- 姓名、电子邮件地址、电话号码、住址
- 求职状态以及求职者提交的所有状态变更和表单内容(例如可工作的班次等)
- 用于登录用户端界面的身份验证令牌,泄露了他们的原始聊天记录,可能还包括其他信息
在结束渗透后,我们立即上报了漏洞。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关
网络安全学习路线/web安全入门/渗透测试实战/红队笔记/黑客入门
感谢各位看官看到这里,欢迎一键三连(点赞+关注+收藏),如果你也是网络安全爱好者,欢迎在评论区留言,也欢迎查看我主页的个人简介进行咨询哦~