Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2019-11708 — Full exploit chain (CVE-2019-11708 & CVE-2019-9810) against Firefox on Windows 64-bit. | Kitploit
Outils/GitHubGitHub/0vercl0k/cve-2019-11708
ExploitationWeb Application ExploitationPayload DevelopmentArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

Full exploit chain (CVE-2019-11708 & CVE-2019-9810) against Firefox on Windows 64-bit.

Voir le dépôt
62478il y a 6 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exploitation en chaîne complète pour CVE-2019-11708 & CVE-2019-9810

Ceci est une chaîne d'exploitation complète compromettant le navigateur (CVE-2019-11708 & CVE-2019-9810) ciblant Firefox sur Windows 64 bits. Elle utilise CVE-2019-9810 pour obtenir l'exécution de code dans le processus de contenu ainsi que dans le processus parent, et CVE-2019-11708 pour tromper le processus parent afin qu'il navigue vers une URL arbitraire.

bigint

J'ai couvert la cause racine de CVE-2019-9810 et son exploitation dans l'article A journey into IonMonkey: root-causing CVE-2019-9810 et dans le dépôt GitHub associé.

CVE-2019-11708 a été corrigé par le bulletin mfsa2019-19 et a été attribué au Bug 1559858 dans le traqueur de bugs de Mozilla. Voici le résumé du problème :

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.

Vous pouvez trouver le commit corrigeant le problème ici : Clean up prompt open calls in Prompter.jsm.

Aperçu du problème

Un article complet sur le problème ainsi que les techniques utilisées dans l'exploit seront décrits dans un prochain article sur doar-e.github.io.

Organisation

L'exploit a été testé sur Windows 19H2 64 bits et cible une version personnalisée de Firefox, donc ne soyez pas surpris si un peu de travail est nécessaire pour le faire fonctionner ailleurs :). Cependant, si vous souhaitez simplement exécuter l'exploit sans rien compiler, j'ai préparé un navigateur pré-packagé que j'ai téléchargé dans release/firefox-68.0a1.en-US.win64.7z. Il inclut également le shell js.exe ainsi que les informations de symboles privés pour js.exe, firefox.exe et xul.dll.

L'exploit suppose que le support de BigInt est activé dans Firefox, ce que vous pouvez faire en basculant javascript.options.bigint dans about:config.

bigint

Le processus d'exploitation utilise une corruption de données pour obtenir l'exécution de JS privilégié, également appelée God Mode (qui est fondamentalement une implémentation de une technique utilisée lors du Pwn2Own2014 par Jüri Aedla) qui est très différente (et beaucoup plus pratique) de la façon dont j'avais exploité CVE-2019-9810. Cela signifie qu'il n'y a pas de détournement de flux de contrôle pendant la chaîne d'exploitation.

  1. L'exploit utilise CVE-2019-9810 pour effectuer la corruption de données God Mode et rafraîchit la page actuelle.
  2. Une fois qu'il peut exécuter du JS privilégié, il trouve le gestionnaire de messages de l'iframe actuelle et déclenche CVE-2019-11708.
  3. Maintenant que le processus parent a visité notre page arbitraire, nous exploitons à nouveau CVE-2019-9810 et obtenons également l'exécution de JS privilégié.
  4. À ce stade, l'ensemble du navigateur (y compris le bac à sable) est compromis. La première étape consiste à télécharger et à déposer une charge utile locale baptisée slimeshady.exe que vous pouvez trouver dans payload/ qui dessine un tas de sprites animés Slime shady sur le bureau avec GDI. L'exploit dépose également et injecte un script de frame (JS privilégié) dans chaque onglet pour backdoorer toute la navigation (les onglets déjà créés ainsi que les nouveaux). Le backdooring des onglets est similaire à CVE-2019-9810/payload dans son effet (JS arbitraire injecté dans chaque onglet), mais cette fois il est implémenté en utilisant une fonctionnalité de Firefox (Services.mm.loadFrameScript) au lieu de hooks bricolés et sales.

En réalité, il y a un tas de détails plus subtils qui ne sont pas décrits ci-dessus, donc si vous êtes intéressé, vous êtes invité à chercher la vérité et à lire les sources / le futur article :).

MISE À JOUR 13 juin 2020 : Selon @rtfingc / Issue #1, Mozilla a atténué la corruption de données présentée dans cet exploit avec un commit du 10 février 2020 : Bug 1602485.

Construction de la charge utile

Pour construire la charge utile, il vous suffit d'exécuter nmake depuis une invite VS 2017 x64.

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

Cela crée un fichier payload.exe / payload.pdb dans le répertoire payload\bin.

Construction de Firefox

J'ai écrit cet exploit contre une version locale de Windows synchronisée avec l'identifiant de révision suivant : 2abb636ad481768b7c88619080cf224b2c266b2d (si vous ne souhaitez pas le construire vous-même, j'ai téléchargé ma version ici : release/firefox-68.0a1.en-US.win64.7z) :

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

Et j'ai utilisé le fichier mozconfig suivant :

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
Télécharger l’outil