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

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

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

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

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

Категории

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

browser-pwn

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

Репозиторий
8321145 лет назадПроверено 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)

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