THM Tomghost
Max Alexeev (@wi_max)Продолжаем решение уязвимых виртуальных машин на платформе TryHackme в рамках подготовки к сертификации OSCP.

Как всегда, начинаем со сканирования хоста. Для этого я использую следующий скрипт:
Результат сканирования выглядит следующим образом:

Анализ результата сканирования позволяет извлечь следующую информацию:
- Мы имеем дело с Apache Tomcat 9.0.30.
- Присутствует интересный сервис на 8009 под названием ajp13.
- SSH - как самый последний вариант.
Открываем наш веб-сервис:

Видя Apache Tomcat, первым делом приходит мысль о небезопасной аутентификации с последующим arbitrary file upload. Но в данном случае /manager/html недоступен.
В ходе просмотра данного ресурса не было выявлено ничего подозрительного или того, за что можно было бы зацепиться.
В ход пошел упомянутый ранее ajp13. Нехитрый ресерч обнаружил следующую уязвимость. Фактически она позволяет совершить LFI и прочитать чувствительную информацию из определенных файлов (если таковая имеется). Для ее реализации я воспользовался следующим эксплоитом и прочитал файл WEB-INF/web.xml.
Так как на панель администратора недоступна, единственный вариант, куда можно попробовать ввести данные - SSH. Пробуем и получаем доступ.

Сразу же видим интересные два файла. При попытке чтения credential.pgp становится ясно, что файл зашифрован. tryhackme.asc же содержит приватный ключ.
Просмотрев домашнюю директорию, находим второго пользователя, у которого лежит флаг юзера.
Попытку повысить привилегии начинаем традиционно с sudo -l , но для нашего пользователя не предоставляет никаких возможностей - возвращаемся к найденному pgp. Попробуем его импортировать.
После импорта попробуем расшифровать файл:
и увидим, что требуется пароль.
Всегда, когда требуется пароль от приватного ключа, первая мысль обратиться к JohnTheRipper. Модуль gpg2john поможеть преобразовать приватный ключ в хэш, чтобы скормить его john.
Подбираем хэш, для этого я использую для этого базу rockyou:
Получаем пароль (alexandru), который позволяет нам расшифровать credential.gpg:
Получаем аутентификационные данные пользователя merlin.
merlin:asuyusdoiuqoilkda312j31k2j123j1g23g12k3g12kj3gk12jg3k12j3kj123j
Меняем пользователя и смотрим на наши возможности:

Нам доступен запуск команды zip с правами суперпользователя. Идем на gtfobins и спавним шелл:
Мы получили root на данной машине.