Содержание статьи
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
IP-адрес Delivery — 10.10.10.222, я добавлю его в /
, чтобы можно было обращаться к хосту по имени. Строчка, которую нужно добавить в файл, будет выглядеть вот так:
10.10.10.222 delivery.htb
Любая атака начинается со сканирования открытых на хосте портов. Это нужно, чтобы знать, какие службы отзываются на наш запрос, а соответственно, работают на целевой системе. Исходя из этой информации, мы сможем выбирать путь для получения точки входа и закрепления на хосте.
Я это делаю с помощью следующего скрипта, который использует утилиту Nmap. Он принимает один аргумент — адрес сканируемого хоста. Сначала скрипт производит обычное быстрое сканирование, а затем все найденные порты сканируются с использованием установленных скриптов для 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
Так я обнаружил три открытых порта:
- порт 22 — служба SSH;
- порт 80 — веб‑сервер nginx 1.14.2;
- порт 8065 — веб‑сервер, но пока не установлено какой.
SSH в начале решения машины трогать нет смысла: там нужен пароль, а у нас его нет. Перебирать логины и пароли (то есть брутфорсить учетные данные) при решении задачек — последнее дело, наверняка есть более элегантный метод добыть учетку.
Поэтому открываем браузер и заходим на сайт номер один, то есть тот, что работает на 80-м порте. Нам нужно не только искать потенциальные точки входа и уязвимости, но и собирать всю сопутствующую информацию: имена пользователей, версии ПО, на котором работает сайт, и так далее.
Главная страница сайта сразу приглашает нас перейти в раздел Contact Us. Там мы находим две ссылки.
Сканирование веба
Первая ссылка, обозначенная как HelpDesk, дает нам новый поддомен helpdesk.
, который сразу стоит добавить в файл /
. Тут нас ждет система поддержки, основанная на тикетах.
10.10.10.222 helpdesk.delivery.htb
Это приложение, которое собирает и отслеживает все обращения в службу поддержки из разных источников, к примеру по телефону или по электронной почте. Независимо от способа обращения запрос будет зарегистрирован в единой системе. При каждом новом обращении создается заявка, а к ней прикрепляются данные о клиентах и инцидентах. Доступ к такой системе может быть очень полезен, но пока что пойдем дальше.
Вторая ссылка, с текстом MatterMost server, приводит на тот самый непонятный порт 8065, о котором мы узнали на стадии сканирования. Там нас сразу встречает форма авторизации Mattermost с возможностью регистрации и восстановления пароля.
Mattermost — это интерактивный онлайновый чат с открытым исходным кодом, с возможностью обмена файлами, своим поиском и интеграциями. Он разработан как внутренний чат для организаций и в основном позиционируется как опенсорсная альтернатива Slack и Microsoft Teams. Заполучив доступ к такому чату, мы сможем узнать полезную информацию и получить сохраненные там файлы.
Точка входа
При регистрации у нас запрашивают адрес электронной почты для подтверждения регистрации. Поэтому мы не можем указать несуществующий адрес.
Поскольку мы уже знаем о существовании системы заявок, стоит попробовать ее использовать. Благо нам доступны опции создания заявки и проверки ее статуса. Переходим на вкладку Open a New Ticket в системе заявок и указываем необходимые для ее создания данные: адрес электронной почты (конечно же, несуществующий), имя пользователя, а также описание своей проблемы (любой текст).
После этого получаем информационное письмо с номером заявки. Но что более важно, для дополнения информации по заявке нам дают адрес электронной почты!
Так как при просмотре статуса тикета отображается история обращений, мы можем использовать данный нам адрес электронной почты при регистрации. Тогда в заявке мы сможем увидеть присланную на данный адрес ссылку для подтверждения регистрации. Давай так и сделаем: регистрируемся в Mattermost, а затем получаем статус заявки.
Как и предполагалось, мы получаем сообщение об успешной регистрации в информации о заявке. В сообщении есть ссылка для подтверждения, перейдя по которой мы станем полноправным пользователем чата Mattermost.
Закрепление
Смотрим доступные сообщения и среди них находим учетные данные для сервера. С найденными учетными данными успешно подключаемся к хосту по SSH.
Так мы получили флаг пользователя.
Локальное повышение привилегий
Дампинг учетных данных
Так как на хосте развернут веб‑сервер, а на нем работает аж целое веб‑приложение, первое наше действие — попробовать получить какие‑либо учетные данные пользователей этого приложения. Высока вероятность, что эти учетные данные подойдут и для локальных пользователей тоже. Обычно такие данные хранятся либо в конфигах, либо в базе данных. Mattermost хранит учетные данные пользователей в базе данных MySQL, а учетные данные для подключения к базе находятся в файле конфигураций /
в разделе SqlSettings
по ключу DataSource
.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»