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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-11708 — Full exploit chain (CVE-2019-11708 & CVE-2019-9810) against Firefox on Windows 64-bit. | Kitploit
Инструменты/GitHubGitHub/0vercl0k/cve-2019-11708
ExploitationWeb Application ExploitationPayload DevelopmentArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

Full exploit chain (CVE-2019-11708 & CVE-2019-9810) against Firefox on Windows 64-bit.

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

Популярное

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

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

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

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

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

Полная цепочка эксплойтов для CVE-2019-11708 и CVE-2019-9810

Это полная цепочка эксплойтов для компрометации браузера (CVE-2019-11708 и CVE-2019-9810), нацеленная на Firefox в Windows 64-бит. Она использует CVE-2019-9810 для получения выполнения кода как в дочернем процессе, так и в родительском процессе, а CVE-2019-11708 для обмана родительского процесса, заставляя его перейти на произвольный URL.

bigint

Я ранее освещал первопричину и эксплуатацию CVE-2019-9810 в статье A journey into IonMonkey: root-causing CVE-2019-9810 и в сопутствующем github репозитории.

CVE-2019-11708 был исправлен бюллетенем mfsa2019-19 и получил номер Bug 1559858 в трекере ошибок Mozilla. Вот краткое описание проблемы:

root@kitploit:~
Insufficient vetting of parameters passed with the Prompt:Open IPC message between child
and parent processes can result in the non-sandboxed parent process opening web content
chosen by a compromised child process. When combined with additional vulnerabilities this
could result in executing arbitrary code on the user's computer.

Вы можете найти коммит, исправляющий эту проблему, здесь: Clean up prompt open calls in Prompter.jsm.

Обзор проблемы

Полное описание проблемы, а также методов, использованных в эксплойте, будет представлено в предстоящей статье на doar-e.github.io.

Организация

Эксплойт exploit был протестирован на Windows 19H2 64-bit и нацелен на пользовательскую сборку Firefox, так что не удивляйтесь, если потребуется некоторая работа, чтобы заставить его работать в другом месте :). Однако, если вы просто хотите запустить эксплойт без компиляции, я подготовил упакованный браузер, который загрузил в release/firefox-68.0a1.en-US.win64.7z. Он также включает оболочку js.exe и информацию о закрытых символах для js.exe, firefox.exe и xul.dll.

Эксплойт предполагает, что поддержка BigInt включена в Firefox, что можно сделать, переключив javascript.options.bigint в about:config.

bigint

Процесс эксплуатации использует повреждение данных для получения привилегированного выполнения JS, также известного как God Mode (что по сути является реализацией техники, использованной на Pwn2Own2014 Юри Аэдла), что очень отличается (и гораздо удобнее) от того, как я эксплуатировал CVE-2019-9810. Это означает, что в цепочке эксплойтов не происходит перехвата потока управления.

  1. Эксплойт использует CVE-2019-9810 для выполнения повреждения данных God Mode и обновляет текущую страницу.
  2. Как только он может выполнять привилегированный JS, он находит менеджер сообщений текущего фрейма и запускает CVE-2019-11708.
  3. Теперь, когда родительский процесс посетил нашу произвольную страницу, мы снова эксплуатируем CVE-2019-9810 и получаем привилегированное выполнение JS и там.
  4. На этом этапе весь браузер (включая песочницу) скомпрометирован. Первый этап — загрузить и сбросить локальную нагрузку под названием slimeshady.exe, которую можно найти в payload/ и которая рисует множество анимированных спрайтов Slime shady на рабочем столе с помощью GDI. Эксплойт также сбрасывает и внедряет frame script (привилегированный JS) в каждую вкладку для бэкдоринга всей навигации (как уже созданных вкладок, так и новых). Бэкдоринг вкладок аналогичен CVE-2019-9810/payload по эффекту (произвольный JS внедряется в каждую вкладку), но на этот раз он реализован с использованием функции Firefox (Services.mm.loadFrameScript) вместо грязных хаков.

В реальности есть множество более тонких деталей, не описанных выше, поэтому если вам интересно, приглашаю вас найти истину и прочитать исходники / будущую статью :).

ОБНОВЛЕНИЕ 13 июня 2020: Согласно @rtfingc / Issue #1, Mozilla смягчила повреждение данных, представленное в этом эксплойте, с помощью коммита от 10 февраля 2020: Bug 1602485.

Сборка нагрузки

Для сборки нагрузки достаточно выполнить nmake из командной строки VS 2017 x64.

root@kitploit:~
CVE-2019-11708\payload>nmake

Microsoft (R) Program Maintenance Utility Version 14.16.27034.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        taskkill /f /im payload.exe
ERROR: The process "payload.exe" not found.
        if not exist .\bin mkdir bin
        python src\genheaders.py sprites
        cl /O1 /nologo /ZI /W3 /D_AMD64_ /DWIN_X64 /sdl /Febin\payload.exe src\payload.cc /link /nologo /debug:full user32.lib
payload.cc
        del *.obj *.pdb *.idb
        if exist .\bin del bin\*.exp bin\*.ilk bin\*.lib
        start .\bin\payload.exe

Это создает файлы payload.exe / payload.pdb в каталоге payload\bin.

Сборка Firefox

Я написал этот эксплойт для локальной сборки Windows, синхронизированной с идентификатором ревизии: 2abb636ad481768b7c88619080cf224b2c266b2d (если вы не хотите собирать его самостоятельно, я загрузил свою сборку сюда: release/firefox-68.0a1.en-US.win64.7z):

root@kitploit:~
$ hg --debug id -i
2abb636ad481768b7c88619080cf224b2c266b2d

И я использовал следующий файл mozconfig:

root@kitploit:~
. "$topsrcdir/browser/config/mozconfigs/win64/common-win64"

ac_add_options --disable-crashreporter
ac_add_options --enable-debug-symbols

. "$topsrcdir/build/mozconfig.clang-cl"
. "$topsrcdir/build/mozconfig.lld-link"

# Use the clang version in .mozbuild
CLANG_LIB_DIR="$(cd ~/.mozbuild/clang/lib/clang/*/lib/windows && pwd)"
export LIB=$LIB:$CLANG_LIB_DIR

ac_add_options --enable-js-shell
ac_add_options --enable-jitspew
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff64
Скачать инструмент