Содержание статьи
initctl
.warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Первым делом добавляем IP машины в /
:
10.10.10.229 spectra.htb
И сканируем порты.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p$ports -A $1

По результатам сканирования имеем три открытых порта:
- порт 22 — служба SSH;
- порт 80 — веб‑сервер nginx 1.17.4;
- порт 3306 — СУБД MySQL.
SSH и MySQL для нас пока закрыты, поэтому начнем с веба. Внимательно изучим сайт и соберем информацию.
Сканирование веб-контента
Сайт представляет собой просто страницу с двумя ссылками. Первая ведет к каталогу, где развернут сайт Software Issue Management на WordPress, а по второму адресу просто получим сообщение об ошибке при подключении к базе данных.



Точка входа
Интересен адрес тестового сайта:
http://10.10.10.229/testing/index.php
Мне показалось подозрительным прямое указание индекс‑файла index.
, поэтому я проверил, что вернет сервер при обращении к http://
. И сервер вдруг вернул все содержимое этой директории! Простейшая ошибка в настройках веб‑сервера, которая иногда может помочь.

Быстро пересмотрев файлы, я нашел в wp-config.
(бэкап wp-config.
) учетные данные для подключения к базе данных.

Уже что‑то имеем, но подключиться к базе данных у меня не вышло, поскольку либо запрещена удаленная авторизация, либо в настройках службы указан только определенный адрес, с которого разрешено подключение. Так что продолжим изучать веб и перейдем к WordPress.
WordPress
Для тестирования сайтов на WordPress мне не раз пригождалась утилита WPScan. С ее помощью можно обнаружить уязвимые версии самого WordPress, тем и плагинов, а также собрать список пользователей и перебрать учетные данные — в общем, все, что нужно.
Чаще всего уязвимости кроются в плагинах, поэтому я зарядил перебор в агрессивном режиме (занимает около получаса).
wpscan --url http://spectra.htb/main/ --plugins-detection aggressive
К сожалению, ничего обнаружено не было. Но вспомним, что у нас есть один пароль, который можно спреить (Password Spraying) по всем найденным пользователям. Давай поищем их в CMS. Запускаем WPScan с опцией -e
.
wpscan --url http://spectra.htb/main/ -e u

И у нас получается авторизоваться от имени пользователя administrator с паролем, найденным в бэкапе файла конфигураций WordPress.

Точка опоры
Администратор WordPress имеет право загружать на сервер файл, поэтому мы можем загрузить шелл и выполнить бэкконнект к своему хосту. В данном случае это легче всего сделать с помощью модуля exploit/
в Metasploit Framework. В опциях модуля следует указать адрес и порт локального хоста для подключения (LHOST
и LPORT
), целевой хост (RHOSTS
), данные администраторской учетки и путь к домашнему каталогу WordPress (TARGETURI
).
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»