Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
browser-pwn — Обновлённая коллекция ресурсов, посвящённых эксплуатации браузеров. | Kitploit
Инструменты/GitHubGitHub/m1ghtym0/browser-pwn
ЭксплуатацияФаззингCTFСтатьи и ИсследованияОбучение и ОбразованиеПодобранные РесурсыЭксплуатация Бинарных Файлов
GitHubm1ghtym0/browser-pwn

browser-pwn

Обновлённая коллекция ресурсов, посвящённых эксплуатации браузеров.

Репозиторий
83211445 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Browser-Pwn

В мире браузеров доминируют 4 крупных игрока:

  • Chromium/Chrome (движок Blink)
  • Firefox (движок Gecko)
  • Safari (движок WebKit)
  • Edge (движок Blink (бывший движок EdgeHTML)

Далее материал разделён на две части:

  • Информация, помогающая понять их архитектуру и реализацию, а также как собрать их из исходников
  • Информация, помогающая найти их функцию запуска калькулятора

Оглавление

  1. Движки
    • Обзор
    • Chromium
    • Firefox
    • Safari
    • Edge
  2. Эксплуатация
    • Обзор
    • Chromium
    • Firefox
    • Safari
    • Edge
  3. Инструменты
  4. Документация по JavaScript

Движки

Обзор движков

  • Основы JavaScript-движков: хорошее, плохое и уродливое
  • Основы JavaScript-движков: Shapes и Inline Caches
  • JavaScript-движки — как они вообще работают (видео)
  • Просмотр исходников

    Конечно, вы можете использовать свой собственный любимый набор инструментов для просмотра исходников. Однако эти репозитории довольно большие, и я перепробовал несколько разных вариантов, пока не нашёл то, что подошло мне. Поэтому, если у вас ещё нет хорошего варианта, вот пара моих наблюдений, которые могут вам помочь:

    • CTags (+Vim): Хорошо работает с переходом по ссылкам и вызовам. Если вы привыкли навигировать по большим деревьям исходников с помощью этого пуристского набора, это может быть хорошим вариантом для вас. Минусом, конечно, является отсутствие функций, которыми сейчас обладают большинство крупных IDE.
    • CLion: Я использую продукты JetBrains для многих задач программирования, но CLion у меня работал не очень хорошо, особенно переход по ссылкам. Конечно, возможно, дело в настройке.
    • Eclipse: Я давно им не пользовался, но он оказался хорошим вариантом. К сожалению, индексатору требуется много ресурсов, чтобы пройтись по коду.
      • Здесь приведено описание настройки для проекта Chromium, но для остальных проектов это работает аналогично.
    • ccls+VSCode — это лучший вариант для меня на данный момент. ccls очень быстро индексирует репозитории и отлично работает с VSCode. Его также можно комбинировать с другими редакторами и IDE — см. https://github.com/MaskRay/ccls/wiki/Editor-Configuration

    Chromium (Blink)

    Проект | GitHub

    Статьи:

    • Что такое Chromium? (DE)

    JavaScript-движком Blink является V8.

    V8

    Проект | GitHub | Исходники | Как собрать

    Сборка (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
    

    Полезные флаги:

    • --print-opt-code: код, генерируемый оптимизирующим компилятором
    • --print-byte-code: байт-код, генерируемый интерпретатором
    • --trace-ic: различные типы объектов, с которыми сталкивается место вызова
    • --trace-opt и --trace-deopt: какие функции (де)оптимизируются
    • --trace-turbo: трассы TurboFan для визуализации Turbolizer

    Статьи:

    • Экскурсия по V8

    JIT-компилятор: TurboFan

    Документация | Блог

    V8 предоставляет визуализацию для TurboFan под названием Turbolizer

    Статьи:

    • Введение в TurboFan
    Использование Turbolizer:
    1. Запустите v8 с флагом --trace-turbo: d8 --trace-turbo foo.js
    2. Создадутся json-файлы, например turbo-foo-0.json
    3. Перейдите в v8/tools/turbolizer и установите с помощью npm, как описано в README.md
    4. Раздайте директорию, например python -m SimpleHTTPServer 8000
    5. Откройте в браузере localhost:8000 и загрузите turbo-foo-0.json

    Firefox (Gecko)

    Проект | GitHub

    JavaScript-движком Gecko является Spidermonkey.

    Spidermonkey

    Проект | Исходники | Как собрать

    Исходники
    • builtin

    Сборка (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
    

    JIT-компилятор: IonMonkey

    Проект

    Spidermonkey предоставляет визуализацию для IonMonkey под названием IonGraph

    Исходники
    • jit

    Safari (Webkit)

    Проект | GitHub

    JavaScript-движком Webkit является JavaScriptCore (JSC).

    JavaScriptCore

    Проект | Вики | Исходники

    Статьи:

    • http://www.filpizlo.com/papers.html
    Исходники
    • Runtime: Source/JavaScriptCore/runtime

    Сборка (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
    

    JIT-компилятор: LLInt+ Baseline JIT + DFG JIT + FTL JIT

    WebKit имеет 4-уровневую систему JIT-компиляторов, отражающую компромисс между накладными расходами на производительность и выигрышем в производительности.

    Статьи:

    • Введение в JIT-оптимизации JavaScript в WebKit
    • Представляем B3 JIT-компилятор
    Исходники
    • LLInt (низкоуровневый интерпретатор)
    • Baseline JIT
    • DFG JIT (JIT на основе графа потоков данных)
    • FTL JIT (JIT-компилятор «быстрее света»)

    Edge (Blink/EdgeHTML)

    Проект | GitHub

    С тех пор как Edge перешёл на Blink и проект Chromium в качестве рендер-движка, Edge использует v8. Изначально у Edge был собственный рендер-движок под названием EdgeHTML, который использовал JavaScript-движок ChakraCore.

    ChakraCore

    GitHub | Как собрать

    Документация

    • Обзор архитектуры

    Исходники

    • Runtime: Types
    • Runtime: Language

    Сборка (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
    

    Эксплуатация

    Обзор эксплуатации

    • Saelo: Атаки на JavaScript-движки
    • Awesome-Browser-Exploitation
    • Атаки на приложения WebKit (слайды)
    • Saelo: Атаки на клиентские JIT-компиляторы - BlackHat 2018
      • Видео
      • Слайды
    • j0nathanj: От нуля до нулевого дня (поиск нулевого дня в Chakra)
      • Видео Слайды
    • Saelo: Fuzzili - (направленный) фаззинг для JavaScript-движков
      • Видео
      • Слайды

    Chromium Pwn

    Статьи

    • Эксплуатация TurboFan через устранение проверок границ
    • saelo: Эксплуатация логических ошибок в JIT-движках JavaScript
      • Статья в Phrack
      • Слайды 41con 19'

    CTF-задачи

    • 34c3: v9
      • Исходники
      • WriteUp (эксплойт-скрипт)
    • 35c3: Krautflare
      • Файлы
      • WriteUp
      • WriteUp
    • CSAW-Finals-2018: ES1337
      • Файлы+WriteUp
    • Plaid CTF 2018: Roll a dice
      • Файлы
      • WriteUp
      • WriteUp
    • Google CTF Finals 2018: Just In Time
      • Файлы+WriteUp
      • Слайды
      • WriteUp
    • *CTF 2019: oob-v8
      • Файлы
      • WriteUp
      • WriteUp
      • WriteUp
    • RealWorldCTF Quals 2019: accessible
      • Файлы
      • WriteUp

    Реальные эксплойты

    • MobilePwn2Own 2013 - Chrome on Android
    • https://halbecaf.com/2017/05/24/exploiting-a-v8-oob-write/
    • niklasb: Эксплуатация IPC в Chrome
      • Видео
      • Слайды
    • CVE-2019-5782 Write-Up
    • CVE-2019-5790
    • CVE-2019-5786 — анализ уязвимости удалённого выполнения кода в Chrome

    Укрепление и смягчающие меры

    • Укрепление кучи

    Firefox Pwn

    Статьи

    • Играемся со SpiderMonkey
    • OR'LYEH? Тень над Firefox
    • Путешествие в IonMonkey: поиск первопричины CVE-2019-9810

    CTF-задачи

    • 33c3: Feuerfuchs
      • Исходники
      • WriteUp
      • WriteUp+Сборка
    • Blaze 2018: blazefox
      • Исходники
      • WriteUp
      • WriteUp (эксплойт-скрипт)
      • WriteUp (эксплойт-скрипт)
      • Сборка+WriteUp
    • 35c3 FunFox
      • Исходники

    Реальные эксплойты

    • Введение в эксплуатацию SpiderMonkey
      • Статья
    • Use-after-free в Spidermonkey (бета 53)
      • Статья
      • Доклад
      • Слайды
    • https://saelo.github.io/posts/firefox-script-loader-overflow.html
    • Use-after-free в SpiderMonkey (64.0a1)
      • Статья
    • CVE-2019-11707 Type Confusion
      • WriteUp
      • Отчёт
    • CVE-2019-11708 & CVE-2019-9810
      • WriteUp

    Safari Pwn

    CTF-задачи

    • RealWorldCTF 2018: Engine for Neophytes
      • Файлы
    • 35c3: WebKid
      • Исходники
      • WriteUp

    Реальные эксплойты

    • http://www.phrack.org/papers/attacking_javascript_engines.html
      • Исходники
      • WriteUp+Сборка
    • Фаззинг Webkit и анализ CVE-2019-8375
    • CVE-2017-2446 WriteUp
    • 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

    Укрепление и смягчающие меры

    • Укрепление кучи
    • CagedPtr Исходники и Пример с ArrayBuffer

    Edge

    Статьи

    • bkth: История об ошибках Chakra
    • bkth: Атаки на Edge через JavaScript-компилятор
      • Видео
      • Слайды

    CTF-задачи

    • Plaid 2017: chakrazy
      • WriteUp
    • N1CTF 2018: Chakra
      • Файлы
    • RealWorldCTF Quals 2019: Appetizer
      • Файлы
    • Trend Micro CTF 2019: ChakraCore 400
      • WriteUp
      • WriteUp
      • Эксплойт

    Реальные эксплойты

    • bkth, S0rryMyBad: Не JIT-ошибка, JIT-эксплойт

    Инструменты

    Библиотеки:

    • pwnjs (JavaScript-библиотека для эксплуатации браузеров)

    Утилиты

    • int64.js
    • utils.js

    Отладка

    • shadow — фреймворк для эксплуатации кучи jemalloc (аллокатор кучи, используемый Firefox)

    Документация по JavaScript (ECMAScript)

    • Типы и значения
    • Объекты
    • Свойства объектов
    Скачать инструмент