Се­год­ня нам пред­сто­ит про­хож­дение лег­кой машины под наз­вани­ем Delivery с пло­щад­ки Hack The Box. Мы поуп­ражня­емся в базовых тех­никах взло­ма, получим дос­туп к Mattermost с помощью Support Ticket System, а потом будем ломать пароли, задавая кас­томные пра­вила в hashcat.

warning

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

 

Разведка

 

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

IP-адрес Delivery — 10.10.10.222, я добав­лю его в /etc/hosts, что­бы мож­но было обра­щать­ся к хос­ту по име­ни. Строч­ка, которую нуж­но добавить в файл, будет выг­лядеть вот так:

10.10.10.222 delivery.htb

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

Я это делаю с помощью сле­дующе­го скрип­та, который исполь­зует ути­литу Nmap. Он при­нима­ет один аргу­мент — адрес ска­ниру­емо­го хос­та. Сна­чала скрипт про­изво­дит обыч­ное быс­трое ска­ниро­вание, а затем все най­ден­ные пор­ты ска­ниру­ются с исполь­зовани­ем уста­нов­ленных скрип­тов для 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
Результат работы скрипта
Ре­зуль­тат работы скрип­та

Так я обна­ружил три откры­тых пор­та:

  • порт 22 — служ­ба SSH;
  • порт 80 — веб‑сер­вер nginx 1.14.2;
  • порт 8065 — веб‑сер­вер, но пока не уста­нов­лено какой.

SSH в начале решения машины тро­гать нет смыс­ла: там нужен пароль, а у нас его нет. Переби­рать логины и пароли (то есть брут­форсить учет­ные дан­ные) при решении задачек — пос­леднее дело, навер­няка есть более эле­ган­тный метод добыть учет­ку.

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

Глав­ная стра­ница сай­та сра­зу приг­лаша­ет нас перей­ти в раз­дел Contact Us. Там мы находим две ссыл­ки.

Страница Contact Us
Стра­ница Contact Us
 

Сканирование веба

Пер­вая ссыл­ка, обоз­начен­ная как HelpDesk, дает нам новый под­домен helpdesk.delivery.htb, который сра­зу сто­ит добавить в файл /etc/hosts. Тут нас ждет сис­тема под­дер­жки, осно­ван­ная на тикетах.

10.10.10.222 helpdesk.delivery.htb
Главная страница helpdesk.delivery.htb
Глав­ная стра­ница helpdesk.delivery.htb

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

Вто­рая ссыл­ка, с тек­стом MatterMost server, при­водит на тот самый непонят­ный порт 8065, о котором мы узна­ли на ста­дии ска­ниро­вания. Там нас сра­зу встре­чает фор­ма авто­риза­ции Mattermost с воз­можностью регис­тра­ции и вос­ста­нов­ления пароля.

Форма авторизации Mattermost
Фор­ма авто­риза­ции Mattermost

Mattermost — это инте­рак­тивный онлай­новый чат с откры­тым исходным кодом, с воз­можностью обме­на фай­лами, сво­им поис­ком и интегра­циями. Он раз­работан как внут­ренний чат для орга­низа­ций и в основном позици­они­рует­ся как опен­сор­сная аль­тер­натива Slack и Microsoft Teams. Заполу­чив дос­туп к такому чату, мы смо­жем узнать полез­ную информа­цию и получить сох­ранен­ные там фай­лы.

 

Точка входа

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

Пос­коль­ку мы уже зна­ем о сущес­тво­вании сис­темы заявок, сто­ит поп­робовать ее исполь­зовать. Бла­го нам дос­тупны опции соз­дания заяв­ки и про­вер­ки ее ста­туса. Перехо­дим на вклад­ку Open a New Ticket в сис­теме заявок и ука­зыва­ем необ­ходимые для ее соз­дания дан­ные: адрес элек­трон­ной поч­ты (конеч­но же, несущес­тву­ющий), имя поль­зовате­ля, а так­же опи­сание сво­ей проб­лемы (любой текст).

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

Форма оформления новой заявки
Фор­ма офор­мле­ния новой заяв­ки
Информационное сообщение о принятой заявке
Ин­форма­цион­ное сооб­щение о при­нятой заяв­ке

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

Форма регистрации Mattermost
Фор­ма регис­тра­ции Mattermost
Получение статуса заявки в HelpDesk
По­луче­ние ста­туса заяв­ки в HelpDesk
Сообщение об успешной регистрации
Со­обще­ние об успешной регис­тра­ции

Как и пред­полага­лось, мы получа­ем сооб­щение об успешной регис­тра­ции в информа­ции о заяв­ке. В сооб­щении есть ссыл­ка для под­твержде­ния, перей­дя по которой мы ста­нем пол­ноправ­ным поль­зовате­лем чата Mattermost.

Форма авторизации Mattermost c сообщением об успешной верификации
Фор­ма авто­риза­ции Mattermost c сооб­щени­ем об успешной верифи­кации
 

Закрепление

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

Чат Mattermost
Чат Mattermost

Так мы получи­ли флаг поль­зовате­ля.

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

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

 

Дампинг учетных данных

Так как на хос­те раз­вернут веб‑сер­вер, а на нем работа­ет аж целое веб‑при­ложе­ние, пер­вое наше дей­ствие — поп­робовать получить какие‑либо учет­ные дан­ные поль­зовате­лей это­го при­ложе­ния. Высока веро­ятность, что эти учет­ные дан­ные подой­дут и для локаль­ных поль­зовате­лей тоже. Обыч­но такие дан­ные хра­нят­ся либо в кон­фигах, либо в базе дан­ных. Mattermost хра­нит учет­ные дан­ные поль­зовате­лей в базе дан­ных MySQL, а учет­ные дан­ные для под­клю­чения к базе находят­ся в фай­ле кон­фигура­ций /opt/mattermost/config/config.json в раз­деле SqlSettings по клю­чу DataSource.

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

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

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

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

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


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

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

    Подписаться

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