Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2019-11708 — Vollständige Exploit-Kette (CVE-2019-11708 & CVE-2019-9810) gegen Firefox unter Windows 64-bit. | Kitploit
Tools/GitHubGitHub/0vercl0k/cve-2019-11708
ExploitationWebanwendungs-ExploitationPayload-EntwicklungArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

Vollständige Exploit-Kette (CVE-2019-11708 & CVE-2019-9810) gegen Firefox unter Windows 64-bit.

Repository anzeigen
62478vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Vollständiger Exploit-Chain für CVE-2019-11708 & CVE-2019-9810

Dies ist eine vollständige Browser-Compromise-Exploit-Chain (CVE-2019-11708 & CVE-2019-9810), die auf Firefox unter Windows 64-Bit abzielt. Sie nutzt CVE-2019-9810, um Code-Ausführung sowohl im Content-Prozess als auch im Parent-Prozess zu erlangen, und CVE-2019-11708, um den Parent-Prozess dazu zu bringen, eine beliebige URL zu besuchen.

bigint

Ich habe die Ursache und Ausnutzung von CVE-2019-9810 bereits im Artikel A journey into IonMonkey: root-causing CVE-2019-9810 und im zugehörigen GitHub-Repository behandelt.

CVE-2019-11708 wurde durch das Bulletin mfsa2019-19 behoben und im Mozilla-Bug-Tracker als Bug 1559858 eingetragen. Hier ist die Zusammenfassung des Problems:

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.

Der Commit, der das Problem behebt, ist hier zu finden: Clean up prompt open calls in Prompter.jsm.

Überblick über das Problem

Eine ausführliche Beschreibung des Problems sowie der im Exploit verwendeten Techniken wird in einem kommenden Artikel auf doar-e.github.io gegeben.

Organisation

Der Exploit wurde gegen Windows 19H2 64-Bit getestet und zielt auf einen benutzerdefinierten Build von Firefox ab; seien Sie also nicht überrascht, wenn etwas Arbeit nötig ist, um ihn woanders zum Laufen zu bringen :). Wenn Sie den Exploit jedoch einfach ausführen möchten, ohne etwas zu kompilieren, habe ich einen gepackten Browser vorbereitet, den ich unter release/firefox-68.0a1.en-US.win64.7z hochgeladen habe. Er enthält auch die js.exe-Shell sowie private Symboldaten für js.exe, firefox.exe und xul.dll.

Der Exploit setzt voraus, dass die Unterstützung für BigInt in Firefox aktiviert ist, was Sie durch Umschalten von javascript.options.bigint in about:config tun können.

bigint

Der Ausnutzungsprozess verwendet eine Datenkorruption, um privilegierte JS-Ausführung zu erlangen, auch bekannt als God Mode (was im Grunde eine Implementierung einer in Pwn2Own2014 verwendeten Technik von Jüri Aedla ist), was sich stark (und viel bequemer) von der Art unterscheidet, wie ich CVE-2019-9810 ausgenutzt habe. Das bedeutet, dass während der Exploit-Chain kein Kontrollfluss entführt wird.

  1. Der Exploit verwendet CVE-2019-9810, um die God Mode-Datenkorruption durchzuführen und die aktuelle Seite neu zu laden.
  2. Sobald er privilegiertes JS ausführen kann, findet er den Message Manager des aktuellen Frames und löst CVE-2019-11708 aus.
  3. Nachdem der Parent-Prozess unsere beliebige Seite besucht hat, nutzen wir erneut CVE-2019-9810 aus und erlangen auch dort privilegierte JS-Ausführung.
  4. An diesem Punkt ist der gesamte Browser (einschließlich Sandbox) kompromittiert. Die erste Stufe besteht darin, eine lokale Payload namens slimeshady.exe herunterzuladen und abzulegen, die Sie in payload/ finden und die mit GDI eine Reihe animierter Slime shady-Sprites auf dem Desktop zeichnet. Der Exploit legt außerdem ein Frame-Skript (privilegiertes JS) in jedem Tab ab und injiziert es, um die gesamte Navigation zu hintertürchen (sowohl bereits erstellte als auch neu erstellte Tabs). Das Hintertürchen der Tabs ist im Effekt ähnlich wie bei CVE-2019-9810/payload (beliebiges JS wird in jeden Tab injiziert), aber diesmal wird es mit einer Firefox-Funktion (Services.mm.loadFrameScript) implementiert, anstatt mit hacky und schmutzigen Hooks.

In Wirklichkeit gibt es eine Reihe subtilerer Details, die oben nicht beschrieben sind. Wenn Sie interessiert sind, sind Sie eingeladen, die Wahrheit zu erforschen und die Quellen / den zukünftigen Artikel zu lesen :).

UPDATE 13. Juni 2020: Laut @rtfingc / Issue #1 hat Mozilla die in diesem Exploit vorgestellte Datenkorruption mit einem Commit vom 10. Februar 2020 gemildert: Bug 1602485.

Erstellen der Payload

Um die Payload zu erstellen, müssen Sie lediglich nmake von einer VS 2017 x64-Eingabeaufforderung aus ausführen.

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

Dies erzeugt eine payload.exe / payload.pdb-Datei im Verzeichnis payload\bin.

Erstellen von Firefox

Ich habe diesen Exploit gegen einen lokalen Windows-Build geschrieben, der auf die folgende Revisions-ID synchronisiert wurde: 2abb636ad481768b7c88619080cf224b2c266b2d (falls Sie ihn nicht selbst bauen möchten, habe ich meinen Build hier hochgeladen: release/firefox-68.0a1.en-US.win64.7z):

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

Und ich habe die folgende mozconfig-Datei verwendet:

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
Tool herunterladen