Найти в Дзене
AUTHORITY

HTB – [Writeup] Runner. Сложность – Medium.

Оглавление

Приветствуем Вас на канале AUTHORITY.

В этой статье предлагаем Вам рассмотреть writeup машины с площадки "HackTheBox", которая называется Runner.

Enumeration

Первым делом сканируем порты с помощью утилиты nmap.

Рис. 1 - Результат работы утилиты nmap
Рис. 1 - Результат работы утилиты nmap

В результате сканирования, мы обнаружили, что открыто 3 порта. Следующим шагом, нам необходимо добавить ip адрес и hostname в /etc/hosts/, после чего мы можем переходить к исследованию доступных ресурсов.
Исследование веб-ресурсов не дало результатов, однако при перечисление subdomain мы нашли интересный субдомен
teamcity.runner.htb, необходимо так же добавить его в наш файл /etc/hosts/.

Рис. 2 - Результат работы утилиты ffuf по фазингу субдоменов
Рис. 2 - Результат работы утилиты ffuf по фазингу субдоменов

Exploitation

Перейдя на доступный ресурс, мы попадаем на панель авторизации, где указаны версия и номер сборки продукта.

Рис. 3 - Страница авторизации на teamcity.runner.htb
Рис. 3 - Страница авторизации на teamcity.runner.htb

Первый же запрос в гугл выдал информацию о критической уязвимости в ПО непрерывной интеграции JetBrains TeamCity, с использованием которой мы можем реализовать удаленное выполнение кода. (Идентификатор уязвимости - CVE-2023-42793).

Ссылка с вариантом реализации: https://www.exploit-db.com/exploits/51884.

Выполним данный скрипт:
python3 51884.py -u http://teamcity.runner.htb

И мы получаем логин:пароль, которые позволяют нам авторизоваться на платформе JetBrains TeamCity.
Переходим в панель администрирования чтобы исследовать доступные функции.

Нам удается обнаружить backup файл, который мы можем скачать.

Рис. 4 - Исследование функционала панели администратора. На скрине представлен файл backup
Рис. 4 - Исследование функционала панели администратора. На скрине представлен файл backup

После длительного исследования архива, найден ssh ключ. Выдаем необходимые права командой: chmod 600 id_rsa.

Рис. 5 - Исследование полученного архива. На скрине представлен найденный файл с ключом
Рис. 5 - Исследование полученного архива. На скрине представлен найденный файл с ключом

Осталось только найти имя пользователя. Просмотрев пользователей в панели администратора, опытным путем определяем, что необходимый нам юзер - это john, подключаемся к нему по ssh.

-7

Получаем наш первый флаг.

Privilege Escalation

При дальнейшем исследовании домашней директории, мы обнаружили пользователя matthew. Чтобы получить root-флаг нам нужно реализовать повышение привилегий в данной системе, но после длительного изучения системы – мы не обнаружили ничего важного или подозрительного.

Однако в скором времени зацепка была найдена при переборе портов утилитой
curl (нужный нам порт - 9000).

Рис. 6 - Результат выполнения команды netstat
Рис. 6 - Результат выполнения команды netstat

Для дальнейшего взаимодействия нам нужно было переадресовать порт на нашу машину с помощью Chisel (есть и другие способы).

Рис. 7 - Выполнение команды утилиты Chisel на атакующей машине
Рис. 7 - Выполнение команды утилиты Chisel на атакующей машине
Рис. 8 - Выполнение команды утилиты Chisel на атакуемой машине
Рис. 8 - Выполнение команды утилиты Chisel на атакуемой машине

Но, прежде чем выполнить команды, нам необходимо скачать его на атакуемой машину.

Важно чтобы версии Chisel были одинаковые!!!

После успешного выполнения команд, мы можем протестировать новые доступные ресурсы (открываем в браузере - http://127.0.0.1:9000, где нам доступно partainer.io)

Рис. 9 - Исследуемый ресурс partainer.io
Рис. 9 - Исследуемый ресурс partainer.io

Попытки найти эксплоит не принесли результата, и мы решили вернуться к обнаруженному ранее backup файлу.
В нем был найден файл
users, в котором мы обнаружили hash пользователя matthew.

Рис. 10 - Найден файл users
Рис. 10 - Найден файл users
-13

Воспользуемся утилитой hashcat, чтобы узнать пароль админа и наконец-то авторизоваться из под администратора.

Рис. 11 - Результат работы утилиты hashcat
Рис. 11 - Результат работы утилиты hashcat

После авторизации нам доступен раздел primary, где запущенные контейнеры.

-15

Далее нам необходимо создать общий том и создать контейнер.

Будет полезным при создании тома: https://docs.portainer.io/user/docker/volumes/add.


Ниже на скриншотах будут показаны необходимые настройки.

-16
-17

Также, при создании контейнера, указываем значение хэш-функции sha контейнера teamcity:latest.
А в настройках контейнера в вкладке volume в параметре
container указываем /mnt/root и выбираем созданный нами том.

После того как все выполнено – переходим в контейнеры и запускаем командную строку от имени root и переходим в каталог
/mnt/root/root.

-18

Поздравляем. Мы завершили это испытание.

-19

А на этом всё!! Спасибо за внимание...

Подписывайтесь на наш telegram-канал AUTHORITY.