Содержание статьи
- Разведка
- Сканирование портов
- Точка входа
- Точка опоры
- Продвижение
- Локальное повышение привилегий
В этом райтапе я покажу, как можно получить сессию в системе через загрузку своего модуля в систему управления контентом Pluck. При повышении привилегий решим задачу в духе CTF по восстановлению размытых на картинке приватных данных из PDF.
Наша цель — получение прав суперпользователя на машине GreenHorn с учебной площадки Hack The Box. Уровень задания — легкий.
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.25 greenhorn.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел три открытых порта:
- 22 — служба OpenSSH 8.9p1;
- 80 — веб‑сервер Nginx 1.18.0;
- 3000 — сервис Gitea.
Судя по логам, на порте 80 развернут сервис Pluck 4.7.18.
Главная страница сайта
Точка входа
Первым делом стоит проверить, есть ли для обнаруженной CMS готовые эксплоиты. Проще всего для начала поискать в Google.
Поиск эксплоитов в Google
Узнаём, что встреченная нами версия Pluck содержит уязвимость CVE-2023-50564 — в компоненте /inc/modules_install.php, позволяющем загрузить ZIP-архив с произвольным файлом на PHP.
Для эксплуатации сперва нужно авторизоваться, поэтому просмотрим репозитории в Gitea — вдруг удастся найти учетные данные?
Доступные репозитории в Gitea
Находим репозиторий с исходными кодами системы Pluck.
Содержимое файла README
В файле login.php находим подключение файла data/settings/pass.php (строка 40). Видимо, в этом файле и определен хеш пароля. Этот хеш потом сравнивается с пользовательскими данными (строка 79).
Содержимое файла login.php
Содержимое файла pass.php
Пробуем пробрутить хеш с помощью hashcat, который сам способен определить тип хеша. Однако в данном случае вариантов несколько, поэтому в ответ получаем таблицу с возможными алгоритмами хеширования и соответствующими им режимами.
hashcat 'd5443aef1b64544f3685bf112f6c405218c573c7279a831b1fe9612e3a4d770486743c5580556c0d838b51749de15530f87fb793afdcc689b6b39024d7790163' rockyou.txt