В этой статье я покажу, как зах­ватить машину Explore, осно­ван­ную на Android. Поможет нам в этом уяз­вимость в фай­ловом менед­жере ES File Explorer, а так­же отла­доч­ный интерфейс ADB. Машина лег­кая, но Android встре­чает­ся на Hack The Box нечас­то, и это дела­ет задач­ку инте­рес­ной.

warning

Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.

 

Разведка. Сканирование портов

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

10.10.10.247 explore.htb

Справка: сканирование портов

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

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

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).

Результат работы скрипта
Ре­зуль­тат работы скрип­та

Ви­дим все­го два откры­тых пор­та: 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 — получить информа­цию об устрой­стве.

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

python3 50070.py getDeviceInfo explore.htb
Получение информации об устройстве
По­луче­ние информа­ции об устрой­стве

Ин­форма­ции нем­ного, но видим кор­невую дирек­торию ftpRoot — /sdcard.

 

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

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

if cmd == cmds[0]:
if len(sys.argv) != 4:
print("[+] Include dir for get list.")
sys.exit(1)
else:
url += sys.argv[3]
Фрагмент оригинального кода эксплоита
Фраг­мент ори­гиналь­ного кода экс­пло­ита
Фрагмент модернизированного кода эксплоита
Фраг­мент модер­низиро­ван­ного кода экс­пло­ита

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

python3 50070.py listFiles explore.htb /sdcard
Содержимое каталога sdcard
Со­дер­жимое катало­га sdcard
Содержимое каталога sdcard (продолжение)
Со­дер­жимое катало­га sdcard (про­дол­жение)

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

python3 50070.py listFiles explore.htb /sdcard/DCIM
Содержимое каталога DCIM
Со­дер­жимое катало­га DCIM

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

python3 50070.py listPics explore.htb
Все найденные изображения
Все най­ден­ные изоб­ражения

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

python3 50070.py getFile explore.htb /sdcard/DCIM/creds.jpg
Загрузка файла с устройства
Заг­рузка фай­ла с устрой­ства

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

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

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

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

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

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

uname -a
Целевая система
Це­левая сис­тема

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии