Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-11708 — Catena di exploit completa (CVE-2019-11708 & CVE-2019-9810) contro Firefox su Windows 64-bit. | Kitploit
Strumenti/GitHubGitHub/0vercl0k/cve-2019-11708
ExploitSfruttamento di Applicazioni WebSviluppo PayloadArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

Catena di exploit completa (CVE-2019-11708 & CVE-2019-9810) contro Firefox su Windows 64-bit.

Vedi Repository
624786 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Catena di exploit completa per CVE-2019-11708 e CVE-2019-9810

Questa è una catena di exploit completa per compromettere il browser (CVE-2019-11708 e CVE-2019-9810) che prende di mira Firefox su Windows a 64 bit. Utilizza CVE-2019-9810 per ottenere l'esecuzione di codice sia nel processo content che nel processo padre e CVE-2019-11708 per ingannare il processo padre facendogli navigare verso un URL arbitrario.

bigint

In passato ho trattato la causa principale e lo sfruttamento di CVE-2019-9810 nell'articolo A journey into IonMonkey: root-causing CVE-2019-9810 e nel repository github associato.

CVE-2019-11708 è stato risolto dal bollettino mfsa2019-19 ed è stato assegnato al Bug 1559858 nel bug tracker di Mozilla. Ecco il riepilogo del problema:

root@kitploit:~
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.

Puoi trovare il commit che affronta il problema qui: Clean up prompt open calls in Prompter.jsm.

Panoramica del problema

Una descrizione completa del problema e delle tecniche utilizzate nell'exploit sarà descritta in un prossimo articolo su doar-e.github.io.

Organizzazione

L'exploit è stato testato su Windows 19H2 a 64 bit e prende di mira una build personalizzata di Firefox, quindi non sorprenderti se è necessario un po' di lavoro per farlo funzionare altrove :). Tuttavia, se vuoi solo eseguire l'exploit senza compilare nulla, ho preparato un browser impacchettato che ho caricato in release/firefox-68.0a1.en-US.win64.7z. Include anche la shell js.exe e le informazioni sui simboli privati per js.exe, firefox.exe e xul.dll.

L'exploit presuppone che il supporto per BigInt sia attivato in Firefox, cosa che puoi fare attivando javascript.options.bigint in about:config.

bigint

Il processo di sfruttamento utilizza una corruzione dei dati per ottenere l'esecuzione JS privilegiata, nota anche come God Mode (che è fondamentalmente un'implementazione di una tecnica usata in Pwn2Own2014 da Jüri Aedla) che è molto diversa (e molto più comoda) dal modo in cui avevo sfruttato CVE-2019-9810. Ciò significa che non c'è dirottamento del flusso di controllo durante la catena di exploit.

  1. L'exploit utilizza CVE-2019-9810 per eseguire la corruzione dei dati God Mode e aggiorna la pagina corrente.
  2. Una volta che può eseguire JS privilegiato, trova il message manager del frame corrente e attiva CVE-2019-11708.
  3. Ora che il processo padre ha visitato la nostra pagina arbitraria, sfruttiamo nuovamente CVE-2019-9810 e otteniamo anche l'esecuzione JS privilegiata lì.
  4. A questo punto l'intero browser (sandbox incluso) è compromesso. Il primo stadio è scaricare e rilasciare un payload locale chiamato slimeshady.exe che puoi trovare in payload/ che disegna una serie di sprite animati di Slime shady sul desktop con GDI. L'exploit rilascia e inietta anche uno script frame (JS privilegiato) in ogni scheda per backdoorare l'intera navigazione (schede già create e nuove). Il backdoor delle schede è simile per effetto a CVE-2019-9810/payload (JS arbitrario iniettato in ogni scheda), ma questa volta è implementato usando una funzionalità di Firefox (Services.mm.loadFrameScript) invece di hook sporchi e rozzi.

In realtà, ci sono molti altri dettagli sottili non descritti sopra, quindi se sei interessato sei invitato a cercare la verità e leggere le fonti / il futuro articolo :).

AGGIORNAMENTO 13 giugno 2020: Secondo @rtfingc / Issue #1, Mozilla ha mitigato la corruzione dei dati presentata in questo exploit con un commit del 10 febbraio 2020: Bug 1602485.

Compilazione del payload

Per compilare il payload, devi solo eseguire nmake da un prompt x64 di VS 2017.

root@kitploit:~
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

Questo crea un file payload.exe / payload.pdb all'interno della directory payload\bin.

Compilazione di Firefox

Ho scritto questo exploit contro una build locale di Windows sincronizzata al seguente id di revisione: 2abb636ad481768b7c88619080cf224b2c266b2d (se non hai voglia di compilarla da solo, ho caricato la mia build qui: release/firefox-68.0a1.en-US.win64.7z):

root@kitploit:~
$ hg --debug id -i
2abb636ad481768b7c88619080cf224b2c266b2d

E ho usato il seguente file mozconfig:

root@kitploit:~
. "$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
Scarica lo strumento