Прохождение Hack The Box Explore

Hack The Box

Сегодня продолжим тему прохождения Hack The Box (HTB). На этот раз виртуальная машина Android, которая называется Hack The Box Explore. Я покажу, как с помощью инструмента отладки ADB и уязвимости в популярном фай­л-менед­жере ES File Explorer взломать Android.

Еще по теме: Прохождение Hack The Box Monitors

Виртуальная машина лег­кая, но как вы знаете Android довольно редко встречается на площадках для практики взлома, что делает прохождение инте­рес­ным.

Прохождение Hack The Box Explore

Для начала до­бав­им IP-адрес машины в /etc/hosts:

Начнем со сканирования портов. Это стан­дар­тная операция при любом пентесте. Сканирование портов позволит определить, какие служ­бы на машине при­нима­ют соеди­нение.

Самый популярный сканер — это Nmap. Следующий скрипт улучшит резуль­таты сканирования:

Ре­зуль­тат скрип­та Nmap
Ре­зуль­тат скрип­та Nmap

Ви­дим все­го два откры­тых пор­та: 2222 (служ­ба SSH) и пока неиз­вес­тный для нас 59777 (на пояс­нение Nmap мож­но не смот­реть, так как он прос­то вывел информа­цию из сво­ей базы). На SSH нам пока делать нечего, у нас нет никаких клю­чей, учет­ных дан­ных и вооб­ще какой‑либо информа­ции для сос­тавле­ния спис­ка паролей. Поэто­му отпра­вим­ся в Google и поищем све­дения про порт 59777.

Уз­наем, что откры­тый порт 59777 содер­жат вер­сии ES File Explorer 4.1.9.5.2 и более ран­ние. ES File Explorer — это пол­нофун­кци­ональ­ный менед­жер фай­лов для Android, и он годит­ся как для локаль­ного, так и для сетево­го исполь­зования.

Поиск эксплоитов

Мы узна­ли, какая исполь­зует­ся тех­нология, а это зна­чит, что мож­но поис­кать готовые экс­пло­иты.

Во время пен­теста луч­ше все­го искать экс­пло­иты при помощи Google, пос­коль­ку этот поис­ковик заг­лядыва­ет и в лич­ные бло­ги, и в самые раз­ные отче­ты. Уско­рят дело спе­циали­зиро­ван­ные базы для поиска уязвимостей вро­де Exploit-DB — там час­то мож­но обна­ружить под­ходящие вари­анты. Если ты работа­ешь в спе­циали­зиро­ван­ной ОС вро­де Kali Linux, то эта база у тебя уже есть и для поис­ка мож­но исполь­зовать ути­литу searchsploit.

В Exploit-DB находим го­товый код. Экс­плу­ати­руемая им уяз­вимость носит иден­тифика­тор CVE-2019-6447. Из ее опи­сания узна­ем детали: при­ложе­ние запус­кает на устрой­стве скры­тый HTTP-сер­вер, который поз­воля­ет получить дос­туп к дан­ным дру­гих поль­зовате­лей, под­клю­чен­ных к той же сети в момент запус­ка при­ложе­ния.

Ска­чива­ем и про­буем запус­тить экс­пло­ит. Нам сооб­щают, что в качес­тве обя­затель­ных парамет­ров нуж­но ука­зать коман­ду и адрес, так­же есть опция для ска­чива­ния фай­лов.

Тес­товый запуск экс­пло­ита
Тес­товый запуск экс­пло­ита

Ес­ли прос­мотреть код экс­пло­ита, мы смо­жем узнать о сле­дующих под­держи­ваемых коман­дах:

  • listFiles — отобразить спи­сок фай­лов в дирек­тории;
  • listPics — спи­сок изоб­ражений;
  • listVideos — спи­сок виде­офай­лов;
  • listAudios — спи­сок ауди­офай­лов;
  • listApps — спи­сок уста­нов­ленных при­ложе­ний;
  • listAppsSystem — спи­сок сис­темных при­ложе­ний;
  • listAppsPhone — спи­сок при­ложе­ний для свя­зи;
  • listAppsSdcard — спи­сок при­ложе­ний на кар­те SD;
  • listAppsAll — спи­сок всех при­ложе­ний;
  • getFile — заг­рузить файл с устрой­ства (для это­го, видимо, и нужен тре­тий параметр);
  • getDeviceInfo — получить информа­цию об устрой­стве.

Преж­де чем ковырять­ся в фай­ловой сис­теме, нуж­но узнать, с чем мы работа­ем. Давай получим информа­цию об устрой­стве:

Информа­ции об устрой­стве
Информа­ции об уязвимом устрой­стве

Ин­форма­ции нем­ного, но видим кор­невую дирек­торию:

Модернизация эксплоита

По­лучить спи­сок фай­лов в задан­ной дирек­тории при помощи это­го экс­пло­ита не вый­дет, поэто­му мне приш­лось его нем­ного дорабо­тать. Для это­го нуж­но прос­то добавить к URL каталог, к которо­му мы обра­щаем­ся. Я реали­зовал это в треть­ем парамет­ре, ниже при­веден код, который сле­дует добавить в экс­пло­ит.

Фраг­мент кода экс­пло­ита
Кода экс­пло­ита

Модер­низиро­ван­ный код экс­пло­ита
Модер­низиро­ван­ный код экс­пло­ита

А теперь в треть­ем парамет­ре переда­дим каталог, содер­жимое которо­го мы хотим получить.

Со­дер­жимое катало­га sdcard
Со­дер­жимое катало­га sdcard

Со­дер­жимое катало­га sdcard (про­дол­жение)
Со­дер­жимое катало­га sdcard (про­дол­жение)

На­ходим файл user.txt, но забирать его пока рано, ведь мы не получи­ли управле­ние. Мож­но пос­мотреть катало­ги заг­рузок (Download) и докумен­тов (Documents), так­же мно­го инте­рес­ного можем най­ти и в кар­тинках. Но спер­ва обра­тим вни­мание на две дирек­тории, дата изме­нения которых отли­чает­ся от осталь­ных: dianxinos и DCIM. В пер­вой ничего инте­рес­ного, а вот в дирек­тории камеры есть инте­рес­ный файл creds.

Со­дер­жимое катало­га DCIM
Со­дер­жимое катало­га DCIM

Эти же фотог­рафии мож­но было обна­ружить с помощью спе­циаль­ной под­держи­ваемой коман­ды listPics.

Все най­ден­ные изоб­ражения
Все най­ден­ные изоб­ражения

Заг­рузим инте­ресу­ющее нас изоб­ражение коман­дой getFile.

Заг­рузка фай­ла с устрой­ства
Заг­рузка фай­ла с устрой­ства

Прос­матри­ваем кар­тинку и находим логин и пароль.

Заг­ружен­ная фотог­рафия
Заг­ружен­ная фотог­рафия

Что харак­терно для такого рода задачек, эта учет­ка под­ходит к SSH. Таким обра­зом мы получа­ем флаг поль­зовате­ля.

Флаг поль­зовате­ля
Флаг поль­зовате­ля

Локальное повышение привилегий

Сом­нева­юсь, что скрип­ты для поис­ка путей повыше­ния при­виле­гий вро­де LinPEAS сра­бота­ют на Android, поэто­му я решил про­верять вруч­ную. Пер­вое, на что я обра­тил вни­мание, — это сис­тема, но никаких экс­пло­итов для Android этой вер­сии обна­ружить не уда­лось.

Це­левая сис­тема
Це­левая сис­тема

Sudo в дан­ной сис­теме отсутс­тву­ет, поэто­му на при­виле­гиро­ван­ные коман­ды без пароля мож­но не наде­ять­ся. А вот откры­тые для локаль­ного хос­та пор­ты пред­став­ляют такой же инте­рес, как и в слу­чае с Windows или Linux.

Вы­вод netstat
Вы­вод netstat

На­ходим порт 5555 и сно­ва отправ­ляем­ся в Google, что­бы узнать, что за софт на нем может работать. По пер­вой же ссыл­ке опре­деля­ем исполь­зуемое ПО — это ADB.

Поиск информации о порте 5555
Поиск информации о порте 5555

ADB (Android Debug Bridge) — кли­ент‑сер­верное при­ложе­ние, которое пре­дос­тавля­ет дос­туп к работа­юще­му эму­лято­ру или устрой­ству. С его помощью мож­но копиро­вать фай­лы, уста­нав­ливать ском­пилиро­ван­ные прог­рам­мные пакеты и запус­кать кон­соль­ные коман­ды. Исполь­зуя кон­соль, мож­но даже изме­нять нас­трой­ки жур­нала и вза­имо­дей­ство­вать с базами дан­ных SQLite, которые хра­нят­ся на устрой­стве.

Для работы нам пот­ребу­ется одно­имен­ное при­ложе­ние ADB, уста­новить которое мож­но коман­дой пря­мо из репози­тори­ев Kali Linux:

Так как порт открыт для локаль­ного хос­та, про­киды­ваем его через SSH:

Те­перь весь тра­фик, который мы пош­лем на локаль­ный порт 5555, будет тун­нелиро­ван на порт 5555 уда­лен­ного устрой­ства. Под­клю­чаем­ся.

Под­клю­чение к ADB
Под­клю­чение к ADB

Со­еди­нение успешно уста­нов­лено, пос­мотрим иден­тифика­торы под­клю­чен­ных устрой­ств.

Под­клю­чен­ные к ADB устрой­ства
Под­клю­чен­ные к ADB устрой­ства

Из пред­став­ленно­го спис­ка нас инте­ресу­ет устрой­ство с иден­тифика­тором 2. Получим коман­дную обо­лоч­ку, передав иден­тифика­тор в парамет­ре -t и ука­зав коман­ду shell.

Прохождение Hack The Box Explore
Прохождение Hack The Box Explore

Мы име­ем шелл и по коман­де su получа­ем при­виле­гиро­ван­ный кон­текст. Оста­ется толь­ко най­ти файл рута.

Флаг рута
Флаг рута

Заключение

Файл най­ден, и мы получи­ли пол­ный кон­троль над машиной.

Еще по теме:

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

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