Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье я покажу, как захватить машину Explore, основанную на Android. Поможет нам в этом уязвимость в файловом менеджере ES File Explorer, а также отладочный интерфейс ADB. Машина легкая, но Android встречается на Hack The Box нечасто, и это делает задачку интересной.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.10.247 explore.htb
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта.
#!/bin/bashports=$(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 (продолжение)
Находим файл user.txt
, но забирать его пока рано, ведь мы не получили управление. Можно посмотреть каталоги загрузок (Download
) и документов (Documents
), также много интересного можем найти и в картинках. Но сперва обратим внимание на две директории, дата изменения которых отличается от остальных: dianxinos
и DCIM
. В первой ничего интересного, а вот в директории камеры есть интересный файл creds
.
python3 50070.py listFiles explore.htb /sdcard/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
Целевая система
Источник: xakep.ru