Слогер Создать блог
Образование

Разбор: комната Tomghost на TryHackMe — как взломать и защититься

Идём по шагам: Nmap, Ghostcat, GPG-ключи и sudo misconfiguration. Смотрим, как атакуют, и что с этим делать администратору.

Суть комнаты

Tomghost — это учебная комната на TryHackMe, в которой нужно последовательно эксплуатировать уязвимости: от чтения файлов через Ghostcat до повышения привилегий через неправильно настроенный sudo. Это классическая тренировка по пентесту: разведка, эксплуатация, постэксплуатация.

Шаг 1: Сканирование и обнаруженные сервисы

Всё начинается со сканирования цели через Nmap. Команда nmap -sV -sC открывает следующую картину:

ПортСервисВерсия
22/tcpSSHOpenSSH 7.2p2
53/tcptcpwrapped
8009/tcpAJP13Apache JServ Protocol
8080/tcpApache Tomcat9.0.30

Порт 8009 с AJP — уже подозрительный. Если Tomcat слушает AJP, есть шанс проверить Ghostcat.

Шаг 2: Ghostcat (CVE-2020-1938)

Ghostcat — уязвимость в Apache Tomcat, которая позволяет читать произвольные файлы из каталога WEB-INF. Достаточно открытого порта AJP (обычно 8009) и совместимой версии. В Metasploit для этого есть готовый модуль: auxiliary/admin/http/tomcat_ghostcat. Запускаем, указываем цель и читаем /WEB-INF/web.xml. Оттуда получаем учётные данные для SSH: логин skyfuck и пароль 8730281lkjlkjdqlksalks.

Ghostcat позволяет только читать файлы, но этого достаточно для доступа — если внутри файла лежат пароли.

Шаг 3: Вход по SSH и разведка системы

Заходим через SSH под учётной записью skyfuck, осматриваемся. Находим файл user.txt в домашней папке пользователя merlin — это первый флаг. Рядом лежат два файла: tryhackme.asc (приватный GPG-ключ) и credential.pgp (зашифрованные данные). Понятно, что нужно расшифровать credential.pgp, а для этого — взломать пароль от ключа.

Шаг 4: Взлом GPG-ключа

Чтобы подобрать пароль от приватного GPG-ключа, его преобразуют в формат, понятный John the Ripper. Сначала через gpg2john получаем хэш, затем запускаем подбор по словарю rockyou.txt:

  • gpg2john tryhackme.asc > /tmp/gpg.txt
  • john /tmp/gpg.txt --wordlist=/usr/share/wordlists/rockyou.txt

Подбор занимает считанные минуты: пароль ключа — alexandru.

Шаг 5: Расшифровка и переход на другого пользователя

Импортируем ключ в GnuPG (gpg --import tryhackme.asc), затем расшифровываем credential.pgp (gpg --decrypt credential.pgp). Внутри — логин и пароль для пользователя merlin. Переключаемся через su merlin. На этом уровне появляется возможность повысить привилегии.

Шаг 6: Повышение привилегий до root через zip

Выполняем sudo -l и видим интересное: merlin может запускать /usr/bin/zip от имени root без пароля. Это типичная ошибка конфигурации sudo. Используем технику из GTFOBins:

TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'

После выполнения — мы root. Остаётся забрать финальный флаг.

Выводы и уроки для защиты

Комната Tomghost показывает, как несколько, казалось бы, мелких недочётов превращаются в полный компрометацию системы. Что стоит вынести:

  • Обновляйте Tomcat и закрывайте AJP-порт, если он не используется. Ghostcat известна с 2020 года, но многие сервера до сих пор уязвимы;
  • Не храните учётные данные в файлах, доступных через приложение. web.xml — не место для паролей;
  • Следите за правилами sudo: разрешение на выполнение zip от root — прямая дорога к RCE через GTFOBins;
  • Используйте сложные пароли для GPG-ключей: rockyou.txt справляется с простыми за считанные минуты.

С точки зрения пентеста, Tomghost — отличная тренировка: цепочка из трёх техник, каждая из которых пригодится в реальных тестах на проникновение.

Ниже — сводная таблица ошибок, которые приводят к компрометации, и способы их закрыть:

Ошибка на сервереЧем опаснаКак исправить
Открытый порт AJPGhostcat: чтение файлов и потенциальный RCEЗакрыть порт 8009 в firewall или отключить AJP-коннектор
Пароли в web.xmlПрямой доступ к учётным данным после чтения файлаВынести секреты в переменные окружения или секретницы
Слабый пароль GPG-ключаПодбор с rockyou.txt за минутыИспользовать длинные случайные пароли или хранить ключи в аппаратных токенах
Sudo с NOPASSWD на zipПолучение root через GTFOBinsУбрать правило sudo или ограничить команды, не давать zip от root

По материалам: dev. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (0)

Войдите, чтобы комментировать.

Пока нет комментариев. Будьте первым.