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

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

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

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

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

Категории

Все категории
Loading categories
pwn2own2020 — Компрометация ядра macOS через Safari путем объединения шести уязвимостей | Kitploit
Инструменты/GitHubGitHub/sslab-gatech/pwn2own2020
Повышение привилегийЭксплуатацияШелл-кодЭксплуатация веб-приложенийТестирование на ПроникновениеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubsslab-gatech/pwn2own2020

pwn2own2020

Компрометация ядра macOS через Safari путем объединения шести уязвимостей

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

Популярное

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

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

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

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

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

Компрометация ядра macOS через Safari с помощью цепочки из шести уязвимостей

Обзор

Этот репозиторий содержит информацию об эксплуатации и технические детали нашей победной заявки на Pwn2Own 2020, направленной на Apple Safari с повышением привилегий ядра для macOS 10.15.3. Для получения дополнительных сведений вы также можете ознакомиться с нашими слайдами с Blackhat USA 2020 и видео. Этот репозиторий также включает наше демонстрационное видео успешной эксплуатации.

Как воспроизвести

  1. Запустите HTTP-сервер с помощью python3 в папке exploits.```shell $ python3 -m http.server 80
2. Откройте веб-сайт с IP-адресом сервера атакующего через Safari:```
http://[attacker_ip]/exploit.html
  1. Дождитесь появления Калькулятора (обычно появляется через десять секунд, но если не повезет, это займет больше времени) и терминала с привилегиями ядра. Чтобы продемонстрировать наше повышение привилегий ядра, мы отключили SIP. Вы можете проверить это, выполнив команду csrutil status, которая покажет disabled.

Сборка из исходников

Для вашего удобства мы предоставили скомпилированный пейлоад, payload.js. Но если хотите, вы можете собрать его самостоятельно. Обратите внимание, что это займет очень много времени, так как мы будем собирать WebKit как часть нашей цепочки эксплойта. Стоит отметить, что мы тестировали процесс сборки только в Mac OS.```shell

Install xcode first

$ python3 -m pip install --user lief $ make

Технические детали
-----------------

Для создания этого эксплойта мы объединили следующие *ШЕСТЬ* уязвимостей.

### 1. Удаленное выполнение кода в Safari из-за некорректного моделирования побочных эффектов оператора 'in' в компиляторе DFG JavaScriptCore

- Анализ первопричины

В JavaScriptCore, когда свойство с индексом запрашивается с помощью оператора 'in', компилятор DFG предполагает, что это не имеет побочных эффектов, если только в цепочке прототипов нет объекта-прокси, который может перехватить эту операцию. JavaScriptCore помечает объект, который может перехватить доступ к свойству с индексом, с помощью флага 'MayHaveIndexedAccessors'. Этот флаг явно установлен для объекта Proxy.```javascript
0 in [] // side-effect free

let arr = [];
arr.__proto__ = new Proxy({}, {});
0 in arr // can cause side-effect!

Однако существует другой объект, который может вызвать побочный эффект: JSHTMLEmbedElement, реализующий собственный метод getOwnPropertySlot(). Один из способов вызвать JavaScript-колбэки (т.е. побочные эффекты) с помощью оператора 'in' — использовать элемент с плагином PDF; когда любое свойство запрашивается у DOM-объекта embed/object, он пытается загрузить поддерживаемый плагин, и обработчик события DOMSubtreeModified может быть вызван в случае плагина PDF, поскольку он использует метод appendChild для элемента body.

Скачать инструмент