Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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-2019-11708 — Cadeia de exploração completa (CVE-2019-11708 e CVE-2019-9810) contra o Firefox no Windows de 64 bits. | Kitploit
Ferramentas/GitHubGitHub/0vercl0k/cve-2019-11708
ExploraçãoExploração de Aplicações WebDesenvolvimento de PayloadsArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

Cadeia de exploração completa (CVE-2019-11708 e CVE-2019-9810) contra o Firefox no Windows de 64 bits.

Ver Repositório
624783há 6 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

Exploração em cadeia completa para CVE-2019-11708 & CVE-2019-9810

Esta é uma cadeia de exploração completa de comprometimento do navegador (CVE-2019-11708 & CVE-2019-9810) que tem como alvo o Firefox no Windows 64 bits. Ela usa a CVE-2019-9810 para obter execução de código tanto no processo de conteúdo quanto no processo pai, e a CVE-2019-11708 para enganar o processo pai a navegar para uma URL arbitrária.

bigint

Já abordei a causa raiz e a exploração da CVE-2019-9810 no artigo A journey into IonMonkey: root-causing CVE-2019-9810 e no repositório do GitHub associado.

A CVE-2019-11708 foi corrigida pelo boletim mfsa2019-19 e recebeu o identificador Bug 1559858 no rastreador de bugs da Mozilla. Aqui está o resumo do problema:

Insufficient vetting of parameters passed with the Prompt:Open IPC message between child
and parent processes can result in the non-sandboxed parent process opening web content
chosen by a compromised child process. When combined with additional vulnerabilities this
could result in executing arbitrary code on the user's computer.

Você pode encontrar o commit que trata do problema aqui: Limpeza das chamadas de abertura de prompt no Prompter.jsm.

Visão geral do problema

Uma descrição completa do problema, bem como as técnicas usadas na exploração, serão descritas em um próximo artigo em doar-e.github.io.

Organização

O exploit foi testado no Windows 19H2 64 bits e tem como alvo uma compilação personalizada do Firefox, então não se surpreenda se for necessário algum trabalho para fazê-lo funcionar em outros lugares :). No entanto, se você quiser apenas executar o exploit sem compilar nada, preparei um navegador empacotado que enviei em release/firefox-68.0a1.en-US.win64.7z. Ele também inclui o shell js.exe e informações de símbolos privados para js.exe, firefox.exe e xul.dll.

O exploit assume que o suporte para BigInt está ativado no Firefox, o que pode ser feito alternando javascript.options.bigint em about:config.

bigint

O processo de exploração usa uma corrupção de dados para obter execução JS privilegiada, também conhecida como God Mode (que é basicamente uma implementação de uma técnica usada no Pwn2Own2014 por Jüri Aedla), que é muito diferente (e muito mais conveniente) da maneira como explorei a CVE-2019-9810. Isso significa que não há sequestro de fluxo de controle durante a cadeia de exploração.

  1. O exploit usa a CVE-2019-9810 para realizar a corrupção de dados do God Mode e atualiza a página atual.
  2. Uma vez que pode executar JS privilegiado, ele encontra o message manager do frame atual e aciona a CVE-2019-11708.
  3. Agora que o processo pai visitou nossa página arbitrária, exploramos novamente a CVE-2019-9810 e também obtemos execução JS privilegiada lá.
  4. Neste ponto, todo o navegador (incluindo a sandbox) está comprometido. O primeiro estágio é baixar e soltar um payload local chamado slimeshady.exe que você pode encontrar em payload/, que desenha uma série de sprites animados do Slime shady na área de trabalho usando GDI. O exploit também solta e injeta um frame script (JS privilegiado) em cada aba para backdoor toda a navegação (tanto abas já criadas quanto recém-criadas). O backdoor de abas é semelhante ao CVE-2019-9810/payload em efeito (JS arbitrário injetado em cada aba), mas desta vez é implementado usando um recurso do Firefox (Services.mm.loadFrameScript) em vez de hacky and dirty hooks.

Na realidade, há uma série de detalhes mais sutis que não são descritos acima, então se você estiver interessado, é convidado a buscar a verdade e ler as fontes / artigo futuro :).

ATUALIZAÇÃO 13 de junho de 2020: De acordo com @rtfingc / Issue #1, a Mozilla mitigou a corrupção de dados apresentada neste exploit com um commit de 10 de fevereiro de 2020: Bug 1602485.

Compilando o payload

Para compilar o payload, basta executar nmake de um prompt do VS 2017 x64.

CVE-2019-11708\payload>nmake

Microsoft (R) Program Maintenance Utility Version 14.16.27034.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        taskkill /f /im payload.exe
ERROR: The process "payload.exe" not found.
        if not exist .\bin mkdir bin
        python src\genheaders.py sprites
        cl /O1 /nologo /ZI /W3 /D_AMD64_ /DWIN_X64 /sdl /Febin\payload.exe src\payload.cc /link /nologo /debug:full user32.lib
payload.cc
        del *.obj *.pdb *.idb
        if exist .\bin del bin\*.exp bin\*.ilk bin\*.lib
        start .\bin\payload.exe

Isso cria um arquivo payload.exe/payload.pdb dentro do diretório payload\bin.

Compilando o Firefox

Escrevi este exploit contra uma compilação local do Windows sincronizada com o seguinte ID de revisão: 2abb636ad481768b7c88619080cf224b2c266b2d (se você não quiser compilar por conta própria, enviei minha compilação aqui: release/firefox-68.0a1.en-US.win64.7z):

$ hg --debug id -i
2abb636ad481768b7c88619080cf224b2c266b2d

E usei o seguinte arquivo mozconfig:

. "$topsrcdir/browser/config/mozconfigs/win64/common-win64"

ac_add_options --disable-crashreporter
ac_add_options --enable-debug-symbols

. "$topsrcdir/build/mozconfig.clang-cl"
. "$topsrcdir/build/mozconfig.lld-link"

# Use the clang version in .mozbuild
CLANG_LIB_DIR="$(cd ~/.mozbuild/clang/lib/clang/*/lib/windows && pwd)"
export LIB=$LIB:$CLANG_LIB_DIR

ac_add_options --enable-js-shell
ac_add_options --enable-jitspew
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff64
Baixar ferramenta