CTF-задание: взлом ch4inrulz

Хакер иконка

В этой статье мы будем преодолевать большое количество препятствий на пути к заветному руту. По ходу реализации взлома мы в разных вариантах обнаружим уязвимости типа LFI, RCE и повышение привилегий. А упражняться будем на виртуальной машине ch4inrulz: 1.0.1, скаченной с сервиса VulhHub.

VulnHub — ресурс, который предоставляет образы операционных систем с сервисами, в которых «зашиты» уязвимости. Скачав такой образ виртуальной машины, каждый человек может получить опыт пентеста или системного администрирования.

Также читайте наш предыдущий отчет — о взломе виртуальной машины Wakanda: 1.

Итак, мы скачали и установили виртуальную машину. Теперь необходимо скачать образ виртуальной ch4inrulz с сервиса VulhHub. Более подробно о настройке виртуальных машин с VulhHub мы рассказывали в предыдущей статье про взлом Wakanda ссылка выше.

Сканирование портов

Начнем с классики: сканируем ее при помощи Nmap. Для этого выполним такую команду (имейте ввиду если будете повторять, то IP-адрес будет другим):

Обнаруживаем, что у хоста торчат порты 21/22, то есть FTP и SSH, а также 80 и 8011 — с веб-сервером.

Можно, конечно, первым делом кинутся на FTP, но делать этого мы не будем, а вместо этого попробуем постучаться на веб-сервер и проведем начальную разведку. На 80-м порте видим сайт какого-то Франка, но никакого интересного интерактива на нем нет.

На 8011-м порте видим заманчивое сообщение, но больше ничего полезного на странице не нашлось.

Фаззинг директорий

Пришло время фаззинга директорий! Делается он для того, чтобы обнаружить какие-то стандартные или интересные пути, где могут быть забыты важные файлы или сервисы, которые нам могут помочь в дальнейшей работе.

Первым мы исследовали 80-й порт, где обнаружился путь /development.

Тут нас встречает basic authentication — пробуем HTTP Verb Tampering, но безуспешно.

HTTP Verb Tampering — атака, которая использует уязвимость в HTTP-Verb-аутентификации и механизмах контроля доступа. Многие механизмы аутентификации только ограничивают доступ по своим параметрам, не предусматривая несанкционированный доступ к закрытым ресурсам с помощью других методов.

Можно начать брутить, но прежде посмотрим, что нам даст фаззинг на 8011-м порте.

Интересно! Кажется, мы нашли API какого-то приложения. Срочно лезем смотреть!

Local File Inclusion

Из перечисленных файлов в живых остался только files_api.php.

Окей, для работы скрипта требуется параметр file. Давай передадим его.

Кажется, нас спалили! Попытка перебора стандартных файлов и проверка на напрашивающийся LFI не сработали через запросы GET. На данном этапе эта точка наиболее интересна, так что давай попробуем поиграться с ней, а не копать дальше. Первая мысль, что пришла в голову: а что, если попробовать POST?

Успех! Нам даже не пришлось заморачиваться с врапперами, null-байтами и прочими ухищрениями для тестирования возможности эксплуатации уязвимостей типа LFI, которую мы заподозрили ранее.

Теперь хотелось бы посмотреть на исходники веб-приложений. Для этого придется немного помучиться с угадыванием путей, что в итоге приведет нас к следующему.

Для поиска путей можно использовать разные словари, однако нам хватило и ручного перебора по стандартным вебовым путям из головы.

Отлично, теперь мы знаем, что корневая папка веба — /var/www. Попытка проверить содержание конфигурационных файлов в этой директории не увенчалась успехом, но мы знаем про папку /development. А там нас ждет очередная удача.

Теперь заглянем в /etc/.htpasswd.

А вот, кажется, и креды от basic authentication. Осталось сломать хеш от пароля.

Воспользуемся для этого утилитой hashcat и словариком rockyou.

Здесь

  • -a 0 — тип атаки по словарю;
  • -m 1600 — номер типа хеша. В нашем случае — Apache $apr1$ MD5, md5apr1, MD5 (APR). Узнать этот номер можно здесь);
  • hash — файлик с хешем $apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0;
  • Downloads/rockyou.txt — путь до словаря.

В результате получаем пароль!

Кстати, потом обнаружилось, что хеш можно было получить, выкачав доступный index.html.bak на 80-м порте, но было уже поздно.

Мы же бежим смотреть, что находится за basic authentication с кредами frank:frank!!!. Там нас встречает следующая страница.

Опять никаких ссылок, и нам снова приходится мучиться с угадыванием пути, но тут все тривиально.

Мы нашли сервис для загрузки картинок. Заманчиво, но давай сначала взглянем на исходники. Как ты помнишь, мы уже можем это сделать. Но без врапперов тут уже не обойтись.

Раскрываем это в читабельном виде.

Получили следующий исходник.

Первая идея — впихнуть в метаданные картинки код на PHP, который мы потом сможем исполнить благодаря обнаруженной ранее LFI.

Осталось подготовить пейлоад. Для этого берем любую картинку в JPG и с помощью exiftool положим в comment нужный нам код при помощи вот такой команды:

Теперь идем загружать!

Отлично, но где сам файл? Самые наблюдательные могли увидеть его в сорцах, которые мы вытащили ранее.

Пора инклудить!

Ура!

Получаем RCE

Теперь формируем запрос на проброс реверс-шелла. Если подробнее, то URL-энкодим вот такой пейлоад:

Затем отправляем его в функции urldecode и system. Кстати, разные полезные нагрузки ты можешь позаимствовать здесь.

В результате ловим сессию.

Эскалация привилегий

Проверим, что за система крутится на тачке.

Нам несказанно повезло, ведь мы можем получить рут при помощи эксплоита для уязвимости DirtyCow. Находим его в ExploitDB и, следуя инструкции, исполняем. (см. также лучшие сайты для поиска уязвимостей).

Тачка наша, расходимся!

Итого

В этом CTF-задании мы обнаружили торчащие наружу FTP (который в нашем решении не пригодился), SSH и два веб-приложения. Благодаря LFI в одном из них мы разжились кредами для basic authentication, где нашелся сервис для аплоада картинок. Загрузив вредоносную картинку, мы получили RCE, проинклудив ее через LFI. Далее мы завладели правами рута при помощи эксплоита DirtyCow. Вот и все!

Для самостоятельного изучения можете скачать виртуалку и попробовать проделать все то же, не подглядывая сюда. Ну а если столкнетесь с проблемой тогда воспользуйтесь статьей.

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз.

Добавить комментарий