Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
browser-pwn — Uma coleção atualizada de recursos voltados para a exploração de navegadores. | Kitploit
Ferramentas/GitHubGitHub/m1ghtym0/browser-pwn
ExploraçãoFuzzingCTFPapers e PesquisaAprendizado e EducaçãoRecursos CuradosExploração de Binários
GitHubm1ghtym0/browser-pwn

browser-pwn

Uma coleção atualizada de recursos voltados para a exploração de navegadores.

Ver Repositório
8321144há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Browser-Pwn

O mundo dos navegadores é dominado por 4 grandes players:

  • Chromium/Chrome (mecanismo Blink)
  • Firefox (mecanismo Gecko)
  • Safari (mecanismo WebKit)
  • Edge (mecanismo Blink (anteriormente mecanismo EdgeHTML)

O conteúdo a seguir é dividido em duas partes:

  • Informações que ajudam a entender sua arquitetura e implementação e como compilá-los a partir das fontes
  • Informações que ajudam a encontrar a funcionalidade de abrir a calculadora

Índice

  1. Mecanismos
    • Visão Geral
    • Chromium
    • Firefox
    • Safari
    • Edge
  2. Exploração
    • Visão Geral
    • Chromium
    • Firefox
    • Safari
    • Edge
  3. Ferramentas
  4. Documentação JavaScript

Mecanismos

Engine-Overview

  • Javascript Engine Fundamentals: the good, the bad, and the ugly
  • Javascript Engine Fundamentals: Shapes and Inline Caches
  • JavaScript Engines - how do they even (Video)
  • Navegue pelas Fontes

    É claro que você pode usar sua própria configuração favorita para navegar pelas fontes. No entanto, esses repositórios são relativamente grandes e eu tentei algumas configurações diferentes até encontrar algo que funcionasse para mim. Então, se você ainda não tem uma boa configuração, aqui estão algumas das minhas experiências que podem ajudar você:

    • CTags (+Vim): Funciona bem para seguir referências e chamadas. Se você está acostumado a navegar por grandes árvores de código com essa configuração purista, pode ser uma boa opção para você. A desvantagem, é claro, é a falta dos recursos que a maioria das grandes IDEs oferece hoje em dia.
    • CLion: Eu uso produtos JetBrains para muitas das minhas atividades de programação, mas o CLion não funcionou bem para mim, especialmente para seguir referências. É claro que isso pode ser devido a problemas de configuração.
    • Eclipse: Não uso há algum tempo, mas acabou sendo uma boa opção. Infelizmente, o indexador consome muitos recursos para percorrer o código.
      • Aqui está uma descrição de configuração para o Projeto Chromium, mas funciona de forma semelhante para os outros projetos também.
    • ccls+VSCode Esta é a melhor opção para mim até agora. O ccls é muito rápido para indexar os repositórios e funciona muito bem com o VSCode. Você também pode combiná-lo com outros editores e IDEs, veja https://github.com/MaskRay/ccls/wiki/Editor-Configuration

    Chromium (Blink)

    Projeto | GitHub

    Artigos:

    • What is Chromium? (DE)

    O mecanismo JavaScript do Blink é o V8.

    V8

    Projeto | GitHub | Código-Fonte | Como Compilar

    Compilação (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 úteis:

    • --print-opt-code: código gerado pelo compilador otimizador
    • --print-byte-code: bytecode gerado pelo interpretador
    • --trace-ic: diferentes tipos de objeto que um call site encontra
    • --trace-opt e --trace-deopt: quais funções são (des)otimizadas
    • --trace-turbo: traces do TurboFan para a visualização no Turbolizer

    Artigos:

    • A tour of V8

    Compilador JIT: TurboFan

    Documentação | Blog

    O V8 fornece uma visualização para o TurboFan chamada Turbolizer

    Artigos:

    • Introduction to TurboFan
    Uso do Turbolizer:
    1. Execute o v8 com --trace-turbo: d8 --trace-turbo foo.js
    2. Gera arquivos json, ex.: turbo-foo-0.json
    3. Vá para v8/tools/turbolizer e instale com npm conforme descrito no README.md
    4. Sirva o diretório, ex.: python -m SimpleHTTPServer 8000
    5. Acesse localhost:8000 e abra turbo-foo-0.json

    Firefox (Gecko)

    Projeto | GitHub

    O mecanismo JavaScript do Gecko é o Spidermonkey.

    Spidermonkey

    Projeto | Código-Fonte | Como Compilar

    Código-Fonte
    • builtin

    Compilação (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
    
    # This name should end with "_DBG.OBJ" to make the version control system ignore it.
    $ mkdir build_DBG.OBJ
    $ cd build_DBG.OBJ
    $ ../configure --enable-debug --disable-optimize
    # Use "mozmake" on Windows
    $ make -j 6
    $ js/src/js
    

    Compilador JIT: IonMonkey

    Projeto

    O Spidermonkey fornece uma visualização para o IonMonkey chamada IonGraph

    Código-Fonte
    • jit

    Safari (Webkit)

    Projeto | GitHub

    O mecanismo JavaScript do WebKit é o JavaScriptCore (JSC).

    JavaScriptCore

    Projeto | Wiki | Código-Fonte

    Artigos:

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

    Compilação (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

    O WebKit possui um sistema de compilador JIT de 4 camadas, representando o trade-off entre o custo de desempenho da sobrecarga e o benefício de desempenho.

    Artigos:

    • Introduction to Webkit's JavaScript JIT Optimizations
    • Introducing the B3 JIT Compiler
    Código-Fonte
    • LLInt (Interpretador de Baixo Nível)
    • Baseline JIT
    • DFG JIT (JIT de Grafo de Fluxo de Dados)
    • FTL JIT (compilador Just-In-Time mais rápido que a luz)

    Edge (Blink/EdgeHTML)

    Projeto | GitHub

    Como o Edge migrou para o Blink e o Projeto Chromium como seu mecanismo de renderização, o Edge está usando o v8. Originalmente, o Edge tinha seu próprio mecanismo de renderização chamado EdgeHTML, que usava o mecanismo JavaScript ChakraCore.

    ChakraCore

    GitHub | Como Compilar

    Documentação

    • Architecture Overview

    Código-Fonte

    • Runtime: Types
    • Runtime: Language

    Compilação (Ubuntu 18.04):

    root@kitploit:~
    # To build ChakraCore on Linux: (requires Clang 3.7+ and 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
    

    Exploração

    Exploitation-Overview

    • Saelo: Attacking JavaScript-Engines
    • Awesome-Browser-Exploitation
    • Attacking WebKit applications (Slides)
    • Saelo: Attacking Client-Side JIT Compilers - BlackHat 2018
      • Vídeo
      • Slides
    • j0nathanj: From Zero to ZeroDay (Finding a Chakra Zero Day)
      • Vídeo Slides
    • Saelo: Fuzzili - (Guided-)fuzzing for JavaScript engines
      • Vídeo
      • Slides

    Chromium Pwn

    Artigos

    • Exploiting TurboFan Through Bounds Check Elimination
    • saelo: Exploiting Logic Bugs in JavaScript JIT Engines
      • Artigo da Phrack
      • Slides do 41con 19'

    Desafios de CTF

    • 34c3: v9
      • Fontes
      • WriteUp (Script de Exploit)
    • 35c3: Krautflare
      • Arquivos
      • WriteUp
      • WriteUp
    • CSAW-Finals-2018: ES1337
      • Arquivos+WriteUp
    • Plaid CTF 2018: Roll a dice
      • Arquivos
      • WriteUp
      • WriteUp
    • Google CTF Finals 2018: Just In Time
      • Arquivos+WriteUp
      • Slides
      • WriteUp
    • *CTF 2019: oob-v8
      • Arquivos
      • WriteUp
      • WriteUp
      • WriteUp
    • RealWorldCTF Quals 2019: accessible
      • Arquivos
      • WriteUp

    Mundo Real

    • MobilePwn2Own 2013 - Chrome on Android
    • https://halbecaf.com/2017/05/24/exploiting-a-v8-oob-write/
    • niklasb: Chrome IPC Exploitation
      • Vídeo
      • Slides
    • CVE-2019-5782 Write-Up
    • CVE-2019-5790
    • CVE-2019-5786 Chrome Remote Code Execution Vulnerability Analysis

    Endurecimento e Mitigações

    • Heap-hardening

    Firefox Pwn

    Artigos

    • Playing around with SpiderMonkey
    • OR'LYEH? The Shadow over Firefox
    • A journey into IonMonkey: root-causing CVE-2019-9810

    Desafios de CTF

    • 33c3: Feuerfuchs
      • Fontes
      • WriteUp
      • WriteUp+Build
    • Blaze 2018: blazefox
      • Fontes
      • WriteUp
      • WriteUp (Script de Exploit)
      • WriteUp (Script de Exploit)
      • Build+WriteUp
    • 35c3 FunFox
      • Fontes

    Mundo Real

    • Introduction to SpiderMonkey
    Baixar ferramenta