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
browser-pwn — Una colección actualizada de recursos centrados en la explotación de navegadores. | Kitploit
Herramientas/GitHubGitHub/m1ghtym0/browser-pwn
ExplotaciónFuzzingCTFPapers e InvestigaciónAprendizaje y EducaciónRecursos CuradosExplotación de Binarios
GitHubm1ghtym0/browser-pwn

browser-pwn

Una colección actualizada de recursos centrados en la explotación de navegadores.

Ver Repositorio
8321144hace 5 añosRevisado por Kitploit

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

Browser-Pwn

El mundo de los navegadores está dominado por 4 actores principales:

  • Chromium/Chrome (motor Blink)
  • Firefox (motor Gecko)
  • Safari (motor WebKit)
  • Edge (motor Blink (antes motor EdgeHTML))

Lo siguiente está dividido en dos partes:

  • Información que ayuda a entender su arquitectura e implementación y cómo compilarlos desde el código fuente
  • Información que ayuda a encontrar su funcionalidad de abrir la calculadora

Tabla de Contenidos

  1. Motores
    • Resumen
    • Chromium
    • Firefox
    • Safari
    • Edge
  2. Explotación
    • Resumen
    • Chromium
    • Firefox
    • Safari
    • Edge
  3. Herramientas
  4. Documentación de JavaScript

Motores

Resumen de Motores

  • Fundamentos de los motores de JavaScript: lo bueno, lo malo y lo feo
Fundamentos de los motores de JavaScript: Shapes y Caches en línea
  • Motores de JavaScript: cómo funcionan (Video)
  • Navegar por el código fuente

    Por supuesto, puedes usar tu configuración favorita para navegar por el código fuente. Sin embargo, esos repositorios son relativamente grandes y probé varias configuraciones diferentes hasta que encontré algo que funcionó para mí. Así que si aún no tienes una buena configuración, aquí tienes algunas de mis experiencias que podrían ayudarte:

    • CTags (+Vim): Funciona bien para seguir referencias y llamadas. Si estás acostumbrado a navegar por árboles de código fuente grandes con esta configuración purista, puede ser una buena opción para ti. La desventaja, por supuesto, es la falta de las funciones que la mayoría de los grandes IDE traen hoy en día.
    • CLion: Uso productos de JetBrains para muchas de mis actividades de programación, pero CLion no me funcionó bien, especialmente para seguir referencias. Por supuesto, esto puede deberse a problemas de configuración.
    • Eclipse: No lo he usado por un tiempo, pero resultó ser una buena opción. Desafortunadamente, el indexador necesita muchos recursos para recorrer el código.
      • Aquí hay una descripción de configuración para el Proyecto Chromium, pero funciona de manera similar para los otros proyectos.
    • ccls+VSCode Esta es la mejor opción para mí hasta ahora. ccls es muy rápido indexando los repositorios y funciona muy bien con VSCode. También puedes combinarlo con otros editores e IDEs, ver https://github.com/MaskRay/ccls/wiki/Editor-Configuration

    Chromium (Blink)

    Proyecto | GitHub

    Artículos:

    • ¿Qué es Chromium? (DE)

    El motor de JavaScript de Blink es V8.

    V8

    Proyecto | GitHub | Código fuente | Cómo compilar

    Compilar (Ubuntu 18.04):

    root@kitploit:~
    $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    $ export PATH=$PATH:./depot_tools
    $ gclient
    $ mkdir ./v8 && cd ./v8
    $ fetch v8 && cd v8
    $ git pull
    $ gclient sync
    $ ./build/install-build-deps.sh
    $ tools/dev/gm.py x64.release
    $ out/x64.release/d8
    

    Flags útiles:

    • --print-opt-code: código generado por el compilador optimizador
    • --print-byte-code: bytecode generado por el intérprete
    • --trace-ic: diferentes tipos de objeto que encuentra un sitio de llamada
    • --trace-opt y --trace-deopt: qué funciones son (des)optimizadas
    • --trace-turbo: trazas de TurboFan para la visualización de Turbolizer

    Artículos:

    • Un recorrido por V8

    Compilador JIT: TurboFan

    Documentación | Blog

    V8 proporciona una visualización para TurboFan llamada Turbolizer

    Artículos:

    • Introducción a TurboFan
    Uso de Turbolizer:
    1. Ejecuta v8 con --trace-turbo: d8 --trace-turbo foo.js
    2. Genera archivos json, p. ej. turbo-foo-0.json
    3. Ve a v8/tools/turbolizer e instala con npm como se describe en README.md
    4. Sirve el directorio, p. ej. python -m SimpleHTTPServer 8000
    5. Navega a localhost:8000 y abre turbo-foo-0.json

    Firefox (Gecko)

    Proyecto | GitHub

    El motor de JavaScript de Gecko es Spidermonkey.

    Spidermonkey

    Proyecto | Código fuente | Cómo compilar

    Código fuente
    • builtin

    Compilar (Ubuntu 18.04):

    root@kitploit:~
    $ wget -O bootstrap.py https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
    $ git clone https://github.com/mozilla/gecko-dev.git && cd gecko-dev
    $ cd js/src
    $ autoconf2.13
    
    # Este nombre debe terminar en "_DBG.OBJ" para que el sistema de control de versiones lo ignore.
    $ mkdir build_DBG.OBJ
    $ cd build_DBG.OBJ
    $ ../configure --enable-debug --disable-optimize
    # Usa "mozmake" en Windows
    $ make -j 6
    $ js/src/js
    

    Compilador JIT: IonMonkey

    Proyecto

    Spidermonkey proporciona una visualización para IonMonkey llamada IonGraph

    Código fuente
    • jit

    Safari (Webkit)

    Proyecto | GitHub

    El motor de JavaScript de Webkit es JavaScriptCore (JSC).

    JavaScriptCore

    Proyecto | Wiki | Código fuente

    Artículos:

    • http://www.filpizlo.com/papers.html
    Código fuente
    • Runtime: Source/JavaScriptCore/runtime

    Compilar (Ubuntu 18.04):

    root@kitploit:~
    # sudo apt install libicu-dev python ruby bison flex cmake build-essential ninja-build git gperf
    $ git clone git://git.webkit.org/WebKit.git && cd WebKit
    $ Tools/gtk/install-dependencies
    $ Tools/Scripts/build-webkit --jsc-only --debug
    $ cd WebKitBuild/Release
    $ LD_LIBRARY_PATH=./lib bin/jsc
    

    Compilador JIT: LLInt + Baseline JIT + DFG JIT + FTL JIT

    WebKit tiene un sistema de compilador JIT de 4 capas, que representa el equilibrio entre el costo de rendimiento general y el beneficio de rendimiento.

    Artículos:

    • Introducción a las optimizaciones JIT de JavaScript de WebKit
    • Presentación del compilador JIT B3
    Código fuente
    • LLInt (intérprete de bajo nivel)
    • Baseline JIT
    • DFG JIT (JIT de grafo de flujo de datos)
    • FTL JIT (compilador Just In Time más rápido que la luz)

    Edge (Blink/EdgeHTML)

    Proyecto | GitHub

    Desde que Edge cambió a Blink y al Proyecto Chromium como su motor de renderizado, Edge usa v8. Originalmente, Edge tenía su propio motor de renderizado llamado EdgeHTML, que usaba el motor de JavaScript ChakraCore.

    ChakraCore

    GitHub | Cómo compilar

    Documentación

    • Resumen de arquitectura

    Código fuente

    • Runtime: Types
    • Runtime: Language

    Compilar (Ubuntu 18.04):

    root@kitploit:~
    # Para compilar ChakraCore en Linux: (requiere Clang 3.7+ y Python 2)
    $ apt-get install -y git build-essential cmake clang libicu-dev libunwind8-dev
    $ git clone https://github.com/Microsoft/ChakraCore && cd ChakraCore
    $ ./build.sh --cc=/usr/bin/clang-3.9 --cxx=/usr/bin/clang++-3.9 --arch=amd64 --debug
    $ out/Debug/ch
    

    Explotación

    Resumen de Explotación

    • Saelo: Atacando motores de JavaScript
    • Awesome-Browser-Exploitation
    • Atacando aplicaciones WebKit (Diapositivas)
    • Saelo: Atacando compiladores JIT del lado del cliente - BlackHat 2018
      • Video
      • Diapositivas
    • j0nathanj: De cero a ZeroDay (Encontrando un Zero Day en Chakra)
      • Video Diapositivas
    • Saelo: Fuzzilli - Fuzzing (guiado) para motores de JavaScript
      • Video
      • Diapositivas

    Chromium Pwn

    Artículos

    • Explotando TurboFan mediante la eliminación de comprobación de límites
    • saelo: Explotando errores lógicos en motores JIT de JavaScript
      • Artículo de Phrack
      • Diapositivas de 41con 19'

    Desafíos CTF

    • 34c3: v9
      • Fuentes
      • WriteUp (Script de explotación)
    • 35c3: Krautflare
      • Archivos
      • WriteUp
      • WriteUp
    • CSAW-Finals-2018: ES1337
      • Archivos+WriteUp
    • Plaid CTF 2018: Roll a dice
      • Archivos
      • WriteUp
      • WriteUp
    • Google CTF Finals 2018: Just In Time
      • Archivos+WriteUp
      • Diapositivas
      • WriteUp
    • *CTF 2019: oob-v8
      • Archivos
      • WriteUp
      • WriteUp
      • WriteUp
    • RealWorldCTF Quals 2019: accessible
      • Archivos
      • WriteUp

    Mundo Real

    • MobilePwn2Own 2013 - Chrome en Android
    • https://halbecaf.com/2017/05/24/exploiting-a-v8-oob-write/
    • niklasb: Explotación de IPC en Chrome
      • Video
      • Diapositivas
    • WriteUp de CVE-2019-5782
    • CVE-2019-5790
    • Análisis de la vulnerabilidad de ejecución remota de código CVE-2019-5786 en Chrome

    Endurecimiento y mitigaciones

    • Endurecimiento del heap

    Firefox Pwn

    Artículos

    • Jugando con SpiderMonkey
    • ¿OR'LYEH? La sombra sobre Firefox
    • Un viaje a IonMonkey: encontrando la causa raíz de CVE-2019-9810

    Desafíos CTF

    • 33c3: Feuerfuchs
      • Fuentes
      • WriteUp
      • WriteUp+Compilación
    • Blaze 2018: blazefox
      • Fuentes
      • WriteUp
      • WriteUp (Script de explotación)
      • WriteUp (Script de explotación)
      • Compilación+WriteUp
    • 35c3 FunFox
      • Fuentes

    Mundo Real

    • Introducción a la explotación de SpiderMonkey
      • Artículo
    • Use-after-free en Spidermonkey (Beta 53)
      • Artículo
      • Charla
      • Diapositivas
    • https://saelo.github.io/posts/firefox-script-loader-overflow.html
    • Use-after-free en SpiderMonkey (64.0a1)
      • Artículo
    • CVE-2019-11707 Type Confusion
      • WriteUp
      • Informe
    • CVE-2019-11708 y CVE-2019-9810
      • WriteUp

    Safari Pwn

    Desafíos CTF

    • RealWorldCTF 2018: Engine for Neophytes
      • Archivos
    • 35c3: WebKid
      • Fuentes
      • WriteUp

    Mundo Real

    • http://www.phrack.org/papers/attacking_javascript_engines.html
      • Código fuente
      • WriteUp+Compilación
    • Fuzzing de WebKit y análisis de CVE-2019-8375
    • WriteUp de CVE-2017-2446
    • https://saelo.github.io/posts/jsc-typedarray.slice-infoleak.html
    • https://github.com/saelo/pwn2own2018/tree/master/stage0
    • https://github.com/LinusHenze/WebKit-RegEx-Exploit
    • https://github.com/W00dL3cs/exploit_playground/tree/master/JavaScriptCore

    Endurecimiento y mitigaciones

    • Endurecimiento del heap
    • CagedPtr Código fuente y Ejemplo de ArrayBuffer

    Edge

    Artículos

    • bkth: Tale of Chakra Bugs
    • bkth: Atacando Edge a través del compilador de JavaScript
      • Video
      • Diapositivas

    Desafíos CTF

    • Plaid 2017: chakrazy
      • WriteUp
    • N1CTF 2018: Chakra
      • Archivos
    • RealWorldCTF Quals 2019: Appetizer
      • Archivos
    • Trend Micro CTF 2019: ChakraCore 400
      • WriteUp
      • WriteUp
      • Exploit

    Mundo Real

    • bkth, S0rryMyBad: Non JIT Bug, JIT Exploit

    Herramientas

    Librerías:

    • pwnjs (Una librería de Javascript para explotación de navegadores)

    Utilidades

    • int64.js
    • utils.js

    Depuración

    • shadow framework de explotación del heap de jemalloc (asignador de heap usado por Firefox)

    Documentación de JavaScript (ECMAScript)

    • Types&Values
    • Objects
    • Object-Properties
    Descargar herramienta