Приветствуем Вас на канале AUTHORITY.
В этой статье предлагаем Вам рассмотреть writeup машины с площадки "HackTheBox", которая называется Runner.
Enumeration
Первым делом сканируем порты с помощью утилиты nmap.
В результате сканирования, мы обнаружили, что открыто 3 порта. Следующим шагом, нам необходимо добавить ip адрес и hostname в /etc/hosts/, после чего мы можем переходить к исследованию доступных ресурсов.
Исследование веб-ресурсов не дало результатов, однако при перечисление subdomain мы нашли интересный субдомен teamcity.runner.htb, необходимо так же добавить его в наш файл /etc/hosts/.
Exploitation
Перейдя на доступный ресурс, мы попадаем на панель авторизации, где указаны версия и номер сборки продукта.
Первый же запрос в гугл выдал информацию о критической уязвимости в ПО непрерывной интеграции JetBrains TeamCity, с использованием которой мы можем реализовать удаленное выполнение кода. (Идентификатор уязвимости - CVE-2023-42793).
Ссылка с вариантом реализации: https://www.exploit-db.com/exploits/51884.
Выполним данный скрипт: python3 51884.py -u http://teamcity.runner.htb
И мы получаем логин:пароль, которые позволяют нам авторизоваться на платформе JetBrains TeamCity.
Переходим в панель администрирования чтобы исследовать доступные функции.
Нам удается обнаружить backup файл, который мы можем скачать.
После длительного исследования архива, найден ssh ключ. Выдаем необходимые права командой: chmod 600 id_rsa.
Осталось только найти имя пользователя. Просмотрев пользователей в панели администратора, опытным путем определяем, что необходимый нам юзер - это john, подключаемся к нему по ssh.
Получаем наш первый флаг.
Privilege Escalation
При дальнейшем исследовании домашней директории, мы обнаружили пользователя matthew. Чтобы получить root-флаг нам нужно реализовать повышение привилегий в данной системе, но после длительного изучения системы – мы не обнаружили ничего важного или подозрительного.
Однако в скором времени зацепка была найдена при переборе портов утилитой curl (нужный нам порт - 9000).
Для дальнейшего взаимодействия нам нужно было переадресовать порт на нашу машину с помощью Chisel (есть и другие способы).
Но, прежде чем выполнить команды, нам необходимо скачать его на атакуемой машину.
Важно чтобы версии Chisel были одинаковые!!!
После успешного выполнения команд, мы можем протестировать новые доступные ресурсы (открываем в браузере - http://127.0.0.1:9000, где нам доступно partainer.io)
Попытки найти эксплоит не принесли результата, и мы решили вернуться к обнаруженному ранее backup файлу.
В нем был найден файл users, в котором мы обнаружили hash пользователя matthew.
Воспользуемся утилитой hashcat, чтобы узнать пароль админа и наконец-то авторизоваться из под администратора.
После авторизации нам доступен раздел primary, где запущенные контейнеры.
Далее нам необходимо создать общий том и создать контейнер.
Будет полезным при создании тома: https://docs.portainer.io/user/docker/volumes/add.
Ниже на скриншотах будут показаны необходимые настройки.
Также, при создании контейнера, указываем значение хэш-функции sha контейнера teamcity:latest.
А в настройках контейнера в вкладке volume в параметре container указываем /mnt/root и выбираем созданный нами том.
После того как все выполнено – переходим в контейнеры и запускаем командную строку от имени root и переходим в каталог /mnt/root/root.
Поздравляем. Мы завершили это испытание.
А на этом всё!! Спасибо за внимание...
Подписывайтесь на наш telegram-канал AUTHORITY.