Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2019-11708 — Cadena de exploit completa (CVE-2019-11708 y CVE-2019-9810) contra Firefox en Windows de 64 bits. | Kitploit
Herramientas/GitHubGitHub/0vercl0k/cve-2019-11708
ExplotaciónExplotación de Aplicaciones WebDesarrollo de PayloadsArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

Cadena de exploit completa (CVE-2019-11708 y CVE-2019-9810) contra Firefox en Windows de 64 bits.

Ver Repositorio
624782hace 6 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Cadena completa de explotación para CVE-2019-11708 & CVE-2019-9810

Esta es una cadena de explotación completa de compromiso del navegador (CVE-2019-11708 & CVE-2019-9810) dirigida a Firefox en Windows de 64 bits. Utiliza CVE-2019-9810 para obtener ejecución de código tanto en el proceso de contenido como en el proceso padre, y CVE-2019-11708 para engañar al proceso padre para que navegue a una URL arbitraria.

bigint

He cubierto la causa raíz y la explotación de CVE-2019-9810 anteriormente en el artículo Un viaje a IonMonkey: descubriendo la causa raíz de CVE-2019-9810 y en el repositorio de github asociado.

CVE-2019-11708 fue corregido por el boletín mfsa2019-19 y se le asignó el Bug 1559858 en el rastreador de bugs de Mozilla. Aquí está el resumen 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.

Puede encontrar el commit que soluciona el problema aquí: .

Limpiar las llamadas de apertura de prompt en Prompter.jsm

Resumen del problema

Un análisis completo del problema, así como las técnicas utilizadas en el exploit, se describirán en un próximo artículo en doar-e.github.io.

Organización

El exploit ha sido probado en Windows 19H2 de 64 bits y está dirigido a una compilación personalizada de Firefox, así que no se sorprenda si se requiere un poco de trabajo para que funcione en otros lugares :). Sin embargo, si solo tiene ganas de ejecutar el exploit sin compilar nada, preparé un navegador empaquetado que subí en release/firefox-68.0a1.en-US.win64.7z. También incluye el shell js.exe así como información de símbolos privados para js.exe, firefox.exe y xul.dll.

El exploit asume que el soporte para BigInt está activado en Firefox, lo cual puede hacer alternando javascript.options.bigint en about:config.

bigint

El proceso de explotación utiliza una corrupción de datos para obtener ejecución de JS privilegiado, también conocido como God Mode (que es básicamente una implementación de una técnica utilizada en Pwn2Own2014 por Jüri Aedla), lo cual es muy diferente (y mucho más conveniente) de la forma en que exploté CVE-2019-9810. Esto significa que no hay secuestro de flujo de control durante la cadena de explotación.

  1. El exploit utiliza CVE-2019-9810 para realizar la corrupción de datos de God Mode y actualiza la página actual.
  2. Una vez que puede ejecutar JS privilegiado, encuentra el administrador de mensajes del marco actual y desencadena CVE-2019-11708.
  3. Ahora que el proceso padre ha visitado nuestra página arbitraria, explotamos CVE-2019-9810 nuevamente y obtenemos ejecución de JS privilegiado allí también.
  4. En este punto, todo el navegador (incluida la sandbox) está comprometido. La primera etapa es descargar y soltar una carga útil local llamada slimeshady.exe que puede encontrar en payload/, la cual dibuja un montón de sprites animados de Slime shady en el escritorio con GDI. El exploit también suelta e inyecta un script de marco (JS privilegiado) en cada pestaña para poner un backdoor en toda la navegación (tanto pestañas ya creadas como las recién creadas). El backdoor en las pestañas es similar en efecto a CVE-2019-9810/payload (JS arbitrario inyectado en cada pestaña), pero esta vez se implementa utilizando una característica de Firefox (Services.mm.loadFrameScript) en lugar de hacks sucios y poco elegantes.

En realidad, hay muchos detalles más sutiles que no se describen arriba, así que si está interesado, está invitado a buscar la verdad y leer las fuentes / el artículo futuro :).

ACTUALIZACIÓN 13 de junio de 2020: Según @rtfingc / Issue #1, Mozilla ha mitigado la corrupción de datos presentada en este exploit con un commit del 10 de febrero de 2020: Bug 1602485.

Construcción de la carga útil

Para construir la carga útil, solo tiene que ejecutar nmake desde un símbolo del sistema de 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

Esto crea un archivo payload.exe / payload.pdb dentro del directorio payload\bin.

Construcción de Firefox

Escribí este exploit contra una compilación local de Windows sincronizada con el siguiente id de revisión: 2abb636ad481768b7c88619080cf224b2c266b2d (si no quiere compilarlo usted mismo, he subido mi compilación aquí: release/firefox-68.0a1.en-US.win64.7z):

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

Y he usado el siguiente archivo 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
Descargar herramienta