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

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

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

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

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

Категории

Все категории
Loading categories
Browser-Pwning- — Правильная хорошо структурированная документация для начала работы с pwning Chrome и pwning V8. | Kitploit
Инструменты/GitHubGitHub/spiralbl0ck/browser-pwning-
Анализ уязвимостейЭксплуатацияОбратная инженерияВеб-безопасностьОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubspiralbl0ck/browser-pwning-

Browser-Pwning-

Правильная хорошо структурированная документация для начала работы с pwning Chrome и pwning V8.

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

Популярное

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

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

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

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

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

Browser-Pwning

Правильно структурированная документация для начала изучения chrome pwning & v8 pwning

Structure of document

Как организован этот документ

  1. Мотивация
  2. Актуальный учебный материал

Мотивация

Браузеры — одна из самых используемых технологий сегодня. На каждом серийном компьютере, если мы просто подключим и будем использовать, увидим установленный браузер. Именно поэтому с точки зрения атакующего и модели угроз очень выгодно, если атакующий способен скомпрометировать браузер через вредоносную страницу. Учитывая вышеизложенные аргументы, я выбираю для изучения JavaScript-движок Google, в частности v8.

Учитывая огромный масштаб проекта v8, в качестве отправной точки я выбираю интерпретатор, а именно d8. Хотя по d8 уже проведено множество исследований, мы надеемся найти хотя бы одну ошибку, а если нет — иметь возможность продвинуться в исследовании эксплуатации браузеров, поскольку v8 предоставляет отправную точку для базовых стратегий разработки эксплойтов, используемых при эксплуатации браузеров.

Ещё одна причина, по которой я выбираю v8 в качестве цели, — это то, что он используется во многих браузерах.

Если заглянуть под капот, мы увидим, что этот движок используется и в MicrosoftEdge, так что есть шанс получить несколько вознаграждений за bug bounty. В качестве базовой операционной системы исследователь будет использовать смесь Windows и Linux, поскольку нет ограничений на получение шелла — ошибки v8 позволяют выполнять код через wasm-страницы, и это не привязано к какой-либо конкретной платформе.

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

Таким образом, мы определяем следующие цели, чтобы начать заниматься взломом браузеров:

  • Изучить, составить карту, освоить внутренние структуры, используемые движком V8, и ключевые точки архитектуры Chrome
  • Изучить и освоить базовые процедуры, необходимые для эксплуатации браузера

Изучить, составить карту, освоить внутренние структуры, используемые движком V8, и ключевые точки архитектуры Chrome

На первом этапе проекта необходимо собрать как можно больше знаний об архитектуре Chrome и о том, как каждый компонент взаимодействует с другими. Чтобы лучше понять это, нам нужно разбить проект Chromium на несколько подкомпонентов, чтобы мы могли изолировать всё и проанализировать должным образом. Точнее, на сколько подкомпонентов разбивается каждый из следующих компонентов

  • Архитектура V8
  • Архитектура Chromium
  • Архитектура Blink

Теперь самый логичный первый шаг — понять архитектуру Chromium. Итак, мы хотим эксплуатировать браузер, но что происходит, когда мы впервые запускаем браузер? После запуска исполняемого файла Chromium этот исполняемый файл запускает несколько процессов.

Порядок и их названия следующие:

Первый называется content-процесс. Что делает этот процесс?

  • Он известен как стартовый процесс.
  • он также является главным процессом
  • он отвечает за запуск собственно главного процесса, который называется browser-процессом

Теперь, когда мы вкратце знаем, что он делает, пришло время углубиться в него:

  • Итак, как минимум в Windows Chromium работает следующим образом: он компилирует файлы в DLL, а затем загружает её в память. Таким образом, основная логика браузера Chromium находится в chromium.dll.
    Это также подтверждается кодом
    2.
    Это взято из chrome_exe_main_win.cc, и если вам интересно прочитать весь код, он находится в chromium/src/chrome/app. Дальше по ходу выполнения мы видим, что он вызывает MakeMainDllLoader(), чтобы вызвать класс загрузчика DLL, после чего запускает «загрузчик», то есть загружает chrome.dll, и при необходимости перезапускает его с нужными командными строками. Чтобы продолжить анализ загрузчика, нужно понять его код, который находится в том же каталоге в файле mail_dll_loader_win.cc. Прокрутив файл до самого конца, мы видим вызов MakeMainDllLoader, который в зависимости от вашей версии вызывает ChromeDllLoader или ChromiumDllLoader.
    3
    Мы видим, что ChromiumDllLoader — это класс, который наследуется от MainDllLoader. Из определения видно, что этот класс просто загружает DLL на основе аргументов, переданных в командную строку, и типа процесса
    6.
    Анализируя метод Launch, мы можем понять некоторые вещи, которые происходят до запуска chrome.dll: Из этого комментария мы можем понять, что "// Launching is a matter of loading the right dll and calling the entry point. // Derived classes can add custom code in the OnBeforeLaunch callback." Запуск Chrome — это загрузка набора DLL, которые фактически выполняют работу. Во-вторых, он принимает аргументы, переданные в командную строку, а затем инициализирует службы песочницы.
    q.
    Сначала он проверяет, является ли браузер инициатором инициализации песочницы, затем проверяет, был ли процесс, вызвавший инициализацию песочницы, вызван как служба облачной печати. Он также проверяет, был ли передан --no-sandbox бинарнику, что в основном сообщает бинарнику, что не нужно запускаться в песочнице. Он проверяет, было ли установлено что-либо из этого, и если какое-либо из условий истинно, вызывает песочницу с соответствующими опциями. Затем в конце мы добираемся до
    8
    что нам и интересно — это обёртка для вызова chrome_main.
Скачать инструмент