Содержание статьи
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Начинаем, как водится, со сканирования портов исследуемой машины. Ее IP сразу добавляем в /
:
10.10.11.150 catch.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
).
Мы нашли несколько открытых портов:
- порт 22 — служба OpenSSH 8.2p1;
- порты 80 и 8000 — служба веб‑сервера Apache 2.4.41;
- порты 3000 и 5000 — какие‑то неизвестные приложения, работающие по протоколу HTTP.
Проходим к сайту на порте 80.
На сайте ничего необычного, скрытого или полезного не находим, кроме того, что предлагается загрузить какое‑то приложение.
После загрузки видим, что это программа для Android. На других портах работают Git (3000), чат Let’s Chat и платформа Cachet.
Точка входа
Как создать и развернуть виртуальную машину Android, а затем включить отладку, я уже писал в недавнем прохождении машины Routerspace, поэтому сразу перейдем к установке приложения.
adb install catchv1.0.apk
При запуске приложения получаем ошибку соединения, а также раскрываем новый поддомен, который сразу добавляем в /
.
10.10.11.150 catch.htb status.catch.htb
Указанный адрес ведет на порт 443, который на сервере закрыт, поэтому попробуем вытянуть из приложения еще какие‑нибудь данные. Для этого я буду использовать мини‑песочницу для Android-приложений MobSF. В ней есть возможность статического и динамического анализа. Если тебе неохота устанавливать макет на свой хост, то можно пользоваться уже развернутой онлайновой версией.
Загружаем приложение и получаем отчет по статическому анализу.
Из важного сразу отмечаем забитые в приложение токены.
По второму токену определяем, что наша следующая цель — Let’s Chat. Вставляем его как токен доступа в заголовок Authorization
.
Точка опоры
Чтобы этот токен автоматически вставлялся в каждый запрос, отправленный через браузер, воспользуемся функцией match/replace в опциях Burp Proxy. Там выбираем заголовок запроса в качестве типа и указываем замену пустого поля нашим заголовком.
Обновляем страницу чата в браузере, в результате чего получаем редирект на страницу /
и список групп.
Можем получить сообщения из группы, выполнив запрос на адрес /
.
В группе 61b86b28d984e2451036eb17
находим пересланные учетные данные пользователя john.
Пробуем ввести эту учетку на всех веб‑сервисах и получаем доступ к платформе Cachet.
Продвижение
В настройках платформы узнаем ее версию — 2.
.
Первым делом стоит проверить, есть ли для этой версии готовые эксплоиты. Самый надежный способ сделать это — поискать в интернете на сайтах вроде HackerOne, exploit-db и, конечно, GitHub.
В блоге Sonar описано несколько CVE. Нам интересна CVE-2021-39174, которая позволит прочитать переменные среды.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»