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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-0022 — Эксплуатация уязвимости CVE-2020-0022 на Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9) | Kitploit
Инструменты/GitHubGitHub/polo35/cve-2020-0022
Безопасность AndroidБезопасность BluetoothКриминалистика памятиЭксплуатацияШелл-кодИнструмент Удаленного ДоступаРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubpolo35/cve-2020-0022

CVE-2020-0022

Эксплуатация уязвимости CVE-2020-0022 на Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9)

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

Популярное

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

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

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

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

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

########################################################################################

CVE-2020-0022 эксплуатация уязвимости на Bouygues BBox Miami Android TV 8.0 - ARM32 Cortex A9 Автор: Polo35 - 24.08.2020

########################################################################################

"Usage: python polo_exploit.py target_bt_mac [target_adb_ip, shell_command, disable_reboot, verbose]"

########################################################################################

Основано на скриптах Яна Руге (Jan Ruge) CVE-2020-0022 - Android 8.0-9.0 Bluetooth Zero-Click RCE – BlueFrag https://insinuator.net/2020/04/cve-2020-0022-an-android-8-0-9-0-bluetooth-zero-click-rce-bluefrag/

########################################################################################

ВВЕДЕНИЕ И СОВЕТЫ

########################################################################################

Скрипт использует bluetooth модуль Python для получения дескриптора ACL-соединения. Поэтому необходимо установить библиотеки bluetooth и pybluez (версию 0.22 для python2 и последнюю версию для python3).

sudo apt-get update sudo apt-get install bluetooth bluez libbluetooth-dev sudo pip install pybluez

В скрипт можно передать команду оболочки в качестве параметра, которая будет выполнена с помощью функции system демоном bluetooth. Для команды оболочки доступно только 104 символа, так как ROP-цепочка занимает первые 20 байт второго payload'а.

Пример: shell_command = "cat /dev/zero | echo 'Target Exploited' > /sdcard/Download/cve-2020-0022-poc"

Скрипт может использовать adb для проверки соединения, просмотра logcat и перезагрузки целевого устройства при необходимости. Для этого необходимо передать IP-адрес цели в качестве параметра. Убедитесь, что подключились к цели с помощью adb connect и открыли оболочку для проверки соединения перед использованием скрипта.

Наилучшие результаты достигаются при подключении к цели через Bluetooth со смартфона, когда скрипт это предлагает ;) Может потребоваться более 30 попыток для успешного срабатывания эксплойта, но иногда он срабатывает с первой попытки.

########################################################################################

УТЕЧКА ПАМЯТИ НА ARM32

########################################################################################

Bouygues BBox Miami основан на процессоре ARM 32-бит Cortex A9. Отличие от ARM64 в том, что функция libc memcpy не вызывает underflow, поэтому получить такие же утечки, как у Яна Руге, невозможно. Но уязвимость присутствует и может быть эксплуатирована другим способом.

Отправляя l2cap-пакет с фрагментацией по 4 байта, можно вызвать memcpy нулевой длины в reassemble_and_dispatch. Это позволяет получить 4 байта неинициализированных данных в конце echo.

Увеличение длины первого пакета (далее называемой mem_offset) позволяет «пройтись» по неинициализированной памяти. Получение 32 эхо-ответов с одинаковым mem_offset даёт от 2 до 8 пригодных для эксплуатации эхо-ответов. Эхо-ответы повторяются, поэтому нет необходимости получать более 32 эхо-ответов при одном mem_offset. Этот метод также засоряет память пакетами, поэтому легко распознать шаблоны и найти смещения в утечках.

Значение mem_offset – это длина l2cap-пакета в символах. Пример: mem_offset 184 = l2cap-пакет длиной 184 символа = l2cap-пакет длиной 368 байт.

Пример «хождения» по памяти и неинициализированных данных с повторениями:

176: 00000000 01000000 01000000 00000000 00000000 01000000 00000000 00000000 00000000 01000000 01000000 00000000 00000000 01000000 00000000 00000000 ................................................................ 177: 00000000 000000a4 00000024 00000000 00000000 000000a4 00000000 00000000 00000000 000000a4 00000024 00000000 00000000 000000a4 00000000 00000000 ...........$...............................$.................... 178: 00000000 0000a4ce 000024d2 00000000 00000000 0000a4d5 00000000 00000000 00000000 0000a4ce 000024d2 00000000 00000000 0000a4d5 00000000 00000000 ..........$...............................$..................... 179: 00000000 00a4ce80 0024d280 00000000 00000000 00a4d580 00000000 00000000 00000000 00a4ce80 0024d280 00000000 00000000 00a4d580 00000000 00000000 .........$...............................$...................... 180: 00000000 a4ce80a3 24d280a3 00000000 00000000 a4d580a3 00000000 00000000 00000000 a4ce80a3 24d280a3 00000000 00000000 a4d580a3 00000000 00000000 ........$...............................$....................... 181: 00000000 ce80a39c d280a31c 00000000 00000000 d580a39c 00000000 00000000 00000000 ce80a39c d280a31c 00000000 00000000 d580a39c 00000000 00000000 ................................................................ 182: 00000000 80a39cce 80a31cd2 00000000 00000000 80a39cd5 00000000 00000000 00000000 80a39cce 80a31cd2 00000000 00000000 80a39cd5 00000000 00000000 ................................................................ 183: 00000000 a39cce80 a31cd280 00000000 00000000 a39cd580 00000000 00000000 00000000 a39cce80 a31cd280 00000000 00000000 a39cd580 00000000 00000000 ................................................................ 184: 00000000 9cce80a3 1cd280a3 00000000 00000000 9cd580a3 00000000 00000000 00000000 9cce80a3 1cd280a3 00000000 00000000 9cd580a3 00000000 00000000 ................................................................ 185: 00000000 ce80a300 d280a300 00000000 00000000 d580a300 00000000 00000000 00000000 ce80a300 d280a300 00000000 00000000 d580a300 00000000 00000000 ................................................................ 186: 00000000 80a30000 80a30000 00000000 00000000 80a30000 00000000 00000000 00000000 80a30000 80a30000 00000000 00000000 80a30000 00000000 00000000 ................................................................ 187: 00000000 a3000000 a3000000 00000000 00000000 a3000000 00000000 00000000 00000000 a3000000 a3000000 00000000 00000000 a3000000 00000000 00000000 ................................................................ 188: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................................................

Мы видим при mem_offset 180 и 184 некоторые адреса памяти в little endian:

a4ce80a3 → адрес 0xa380cea4 24d280a3 → адрес 0xa380d224 a4d580a3 → адрес 0xa380d5a4 9cce80a3 → адрес 0xa380ce9c 1cd280a3 → адрес 0xa380d21c 9cd580a3 → адрес 0xa380d59c

Существует как минимум 4 или 5 значений mem_offset, при которых почти после каждой перезагрузки можно найти реальные адреса памяти. Позже мы увидим, как их можно использовать.

########################################################################################

АНАЛИЗ ПЕРВОГО СБОЯ

########################################################################################

Отправляя l2cap-пакет с фрагментацией по 2 байта, можно вызвать memcpy длины -2 в reassemble_and_dispatch. Это позволяет переполнить за пределы частичного пакета 30 байтами контролируемых данных из второго пакета. Поскольку копируется 30 байт, нет необходимости отправлять пакеты размером более 32 байт с последними 4 нулевыми байтами.

Этот метод переполнения иногда вызывает сбой демона bluetooth с контролируемым регистром R0 в _Z11list_appendP6list_tPv+65:

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