Се­год­ня будем упражнять­ся в сети с Active Directory, где часть машин работа­ет на Linux. Нач­нем с веб‑уяз­вимос­тей: XSS в поч­товике Roundcube и SQL-инъ­екции. Затем в Linux най­дем бэкап базы дан­ных и информа­цию для вхо­да в домен. Сле­дом исполь­зуем несог­ласован­ность меж­ду пос­тавщи­ками Kerberos и ском­про­мети­руем еще один хост на Linux, а затем и весь домен.

На­ша конеч­ная цель — получе­ние прав супер­поль­зовате­ля на машине DarkCorp с учеб­ной пло­щад­ки Hack The Box. Уро­вень слож­ности задания, как ты уже мог догадать­ся, — «безум­ный».

warning

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

 

Разведка

 

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

Итак, прис­тупим. Как всег­да, добав­ляем IP-адрес машины в /etc/hosts:

10.10.11.54 darkcorp.htb

И запус­каем ска­ниро­вание пор­тов.

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

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

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

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

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

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

Ска­нер нашел два откры­тых пор­та:

  • 22 — служ­ба OpenSSH 9.2p1;
  • 80 — веб‑сер­вер Nginx 1.22.1.

Вы­бора нет, начина­ем с веб‑сер­вера.

 

Точка входа

Нас редирек­тит на домен drip.htb, и сис­тема, естес­твен­но, не резол­вит имя.

Текст ошибки
Текст ошиб­ки

Об­новим запись в фай­ле /etc/hosts и сно­ва обра­тим­ся к сай­ту.

10.10.11.54 darkcorp.htb drip.htb
Главная страница сайта
Глав­ная стра­ница сай­та

На сай­те находим информа­цию о собс­твен­ном поч­товом сер­висе (судя по кар­тинке, это Roundcube). Так­же есть ссыл­ка на авто­риза­цию в поч­те, одна­ко и этот домен не будет резол­вить­ся.

Текст ошибки
Текст ошиб­ки

Опять допол­няем запись в /etc/hosts и обновля­ем стра­ницу поч­тового сер­виса.

10.10.11.54 darkcorp.htb drip.htb mail.drip.htb
Главная страница сайта
Глав­ная стра­ница сай­та

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

Входящие сообщения
Вхо­дящие сооб­щения

Про­дол­жаем собирать информа­цию. Узна­ем, какая вер­сия Roundcube раз­верну­та на сер­вере.

Информация о сервисе
Ин­форма­ция о сер­висе

Пер­вым делом сто­ит про­верить, есть ли для нее готовые экс­пло­иты. Прос­то поищем их в Google.

Поиск эксплоитов в Google
По­иск экс­пло­итов в Google

Третья ссыл­ка ведет на репози­торий GitHub с опи­сани­ем уяз­вимос­ти CVE-2024-42009.

 

CVE-2024-42009

Roundcube до вер­сии 1.5.7 и с 1.6.x до 1.6.7 содер­жит уяз­вимость XSS, что дает воз­можность через отправ­ку спе­циаль­ного сооб­щения получить все дан­ные из поч­тового ящи­ка ата­куемо­го поль­зовате­ля, в том чис­ле и содер­жимое сооб­щений.

Но нам нуж­но най­ти поч­товые адре­са для ата­ки. В фор­ме Contact Us на сай­те мож­но отпра­вить сооб­щение, а в Burp Proxy — уви­деть, что оно идет на поч­товый ящик support@drip.htb.

Форма Contact Us
Фор­ма Contact Us
Запрос на сервер в Burp Proxy
Зап­рос на сер­вер в Burp Proxy

Так­же инте­рес­но, от име­ни какого поль­зовате­ля отправ­ляет­ся сооб­щение. Что­бы это узнать, исполь­зуем Burp Repeater и изме­ним целевой адрес на свой.

Запрос на сервер
Зап­рос на сер­вер

В поч­те про­верим «Вхо­дящие» и из нового сооб­щения узна­ем поч­товый адрес безопас­ника bcase@drip.htb.

Содержимое сообщения
Со­дер­жимое сооб­щения

Те­перь нем­ного адап­тиру­ем код экс­пло­ита. В стро­ке 34 изме­ним TARGET_URL, в стро­ке 44 ука­жем адрес сво­его веб‑сер­вера, куда будет эксфиль­тро­вано содер­жимое поч­тового ящи­ка, а в перемен­ной post_data заменим адрес отпра­вите­ля и получа­теля.

Измененный код эксплоита
Из­менен­ный код экс­пло­ита

За­пус­каем веб‑сер­вер:

python3 -m http.server 4444

А теперь запус­каем сам экс­пло­ит:

python3 -m venv venv
source ./venv/bin/activate
pip install requests beautifulsoup4
python3 exploit.py
Результат работы эксплоита
Ре­зуль­тат работы экс­пло­ита
Логи веб-сервера
Ло­ги веб‑сер­вера

Де­коди­руем дан­ные из Base64 и откры­ваем фай­лы через бра­узер. В одном из сооб­щений с адре­са ebelford@drip.htb находим упо­мина­ние неиз­вес­тно­го нам сер­виса dev-a3f1-01.drip.htb.

Декодированная страница
Де­коди­рован­ная стра­ница
 

Точка опоры

Об­новля­ем запись в фай­ле /etc/hosts и отправ­ляем­ся смот­реть новый сер­вис.

10.10.11.54 darkcorp.htb drip.htb mail.drip.htb dev-a3f1-01.drip.htb
Главная страница dev-a3f1-01.drip.htb
Глав­ная стра­ница dev-a3f1-01.drip.htb

Сайт недос­тупен, но на стра­нице ошиб­ки есть ссыл­ка на авто­риза­цию. А там — фун­кция сбро­са пароля.

Страница сброса пароля
Стра­ница сбро­са пароля

Что­бы сбро­сить пароль, ука­жем поч­ту поль­зовате­ля. Так как мы можем читать сооб­щения поль­зовате­лей, вве­дем поч­ту bcase@drip.htb, а затем пов­торим экс­плу­ата­цию XSS. В сооб­щении най­дем ссыл­ку на стра­ницу изме­нения пароля.

Входящее сообщение
Вхо­дящее сооб­щение
Страница изменения пароля
Стра­ница изме­нения пароля

Ус­танав­лива­ем для учет­ной записи свой пароль и авто­ризу­емся в сис­теме.

Главная панель сайта
Глав­ная панель сай­та

На стра­нице Analytics выводят­ся логи и при­сутс­тву­ет поле для филь­тра.

Страница Analytics
Стра­ница Analytics

Пер­вым делом поп­робу­ем наг­рузку для SQL-инъ­екции. На стра­нице отоб­разилась ошиб­ка SQL, а зна­чит, будем копать даль­ше в этом нап­равле­нии.

Ошибка SQL
Ошиб­ка SQL
 

SQL-инъекция

При экс­плу­ата­ции SQL-инъ­екции пер­вым делом узна­ем вер­сию СУБД.

''; SELECT version() -- -
Версии СУБД
Вер­сии СУБД

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

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

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

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии