Удаленное выполнение кода в MobSF через уязвимость CVE-2024-21633

Взлом уязвимость

Недавно я обнаружил уязвимость в инструменте APKtool и сообщил о ней через систему GitHub Security Advisory. Для тех, кто не в курсе, многие проекты используют и зависят от APKtool. В этой статье я покажу влияние уязвимости CVE-2024-21633 на примере популярного в узких кругах инструменте MobSF.

Еще по теме: Подпись APK-файла с помощью APKtool

Что такое MobSF

MobSF (Mobile Security Framework) — инструмент для анализа безопасности мобильных приложений. Он поддерживает анализ как исходного кода, так и бинарных файлов (APK, IPA) для платформ Android и iOS. Тулза помогает выявлять уязвимости, ошибки конфигурации и проблемы с безопасностью, предоставляя детальные отчеты и рекомендации по их устранению.

Мы рассказывали про этот инструмент в статье «Использование MobSF для анализа APK-файлов».

Уязвимость CVE-2024-21633

Обнаруженная уязвимость позволяет записывать любые данные по относительному пути к "${decode target path}/res/". Наибольшую опасность представляет возможность удаленного выполнения кода (RCE). Однако есть одно «но» — записанный файл не является исполняемым.

Изначально у меня было две идеи:

  • Перезаписать файлы инициализации оболочки, такие как .bashrc или .zshrc. Но для этого требуется, чтобы «целевой путь декодирования» находился в пользовательской папке, либо нужно знать (или перебирать) имя пользователя.
  • Создать задание cron для запуска вредоносного скрипта, что требует привилегий root.

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

Эксплуатация CVE-2024-21633 в MobSF

MobSF использует jadx как часть статического анализа. Перед вызовом jadx через subprocess, MobSF меняет разрешения jadx на исполняемые.

Вот фрагмент лога, где последовательно вызываются apktool, chmod и jadx:

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

Наша базовая папка ресурсов:

Мы хотим перезаписать бинарный файл jadx по пути:

Наша полезная нагрузка будет находиться: в res/raw/jadx:

Имя ресурса будет:

Уязвимость CVE-2024-21633

Загружаем APK и ждем выполнения jadx.

Эксплуатация CVE-2024-21633 в MobSF

И получаем реверс-шелл в Netcat.

Удаленное выполнение кода в MobSF

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

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

ПОЛЕЗНЫЕ ССЫЛКИ:

 

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий