Публичный database.log
Служебный файл раскрывает имя пользователя базы и детали внутренней архитектуры.
Исправление: убрать лог из web-root, закрыть доступ, исключить секреты и служебные данные из журналов.ATTACK PATH // Интерактивная игра
Пройдите цепочку от IP-адреса до данных и посмотрите, как технические ошибки превращаются в понятный бизнес-риск.
Перед активными действиями
Пентест начинается с договора и границ. Это защищает рабочую систему, данные и самого заказчика от неожиданных последствий.
Внешняя разведка
$ цель: 203.0.113.42
готов к безопасному сканированию…
С чего начнём?
Открытый порт похож на незапертую дверь в здании. Сам по себе он ещё не означает взлом, но показывает поверхность, которую нужно проверить.
Поиск скрытого контента
$ готовим словарь путей…
Фаззинг перебирает вероятные адреса страниц. Так находятся забытые панели, резервные копии и служебные файлы, на которые нет ссылок в меню.
Раскрытие служебной информации
2026-09-01 09:14:02 db connection retry host=127.0.0.1 port=5432 db_name=portal db_user=postgres warning: default credentials policy not applied
Пароля в файле нет, но атакующий получил важную подсказку. Такие мелочи сокращают количество догадок и помогают собрать полноценную цепочку.
Проверка контроля доступа
Войдите с исходным значением, затем проверьте, что изменится при выборе другой роли.
Пользователь может изменить всё, что отправляет браузер. Сервер обязан сам проверять права на каждое действие.
Развитие цепочки
На первом этапе был ещё один открытый сервис, а в логе нашлась подсказка. Подключитесь к базе.
Подсказка: иногда имя стандартной учётной записи совпадает с паролем.
Одна ошибка редко живёт отдельно. Утечка имени, открытая база и слабый пароль вместе дают атакующему прямой доступ к данным.
Подтверждение влияния
CONNECTED PostgreSQL 15 · database: portal
portal=#
| username | role | mfa |
|---|---|---|
| admin.acme | admin | off |
| sales.demo | user | off |
| support.demo | user | on |
Нажмите на запрос. LIMIT 3 ограничивает выборку тремя записями, OFFSET 0 начинает с первой строки. Сортировка по username задаёт порядок.
Цель проверки — подтвердить влияние безопасным способом и остановиться. Для отчёта достаточно минимального доказательства, данные выгружать целиком не нужно.
По отдельности проблемы выглядели терпимо. Вместе они позволили перейти от обычного посетителя к административной панели и базе пользователей.
Служебный файл раскрывает имя пользователя базы и детали внутренней архитектуры.
Исправление: убрать лог из web-root, закрыть доступ, исключить секреты и служебные данные из журналов.Сервер доверяет роли из запроса и выдаёт административные права обычному пользователю.
Исправление: определять роль на сервере и проверять авторизацию для каждого административного действия.Открытый порт и пара postgres/postgres позволяют подключиться к базе извне.
Исправление: закрыть 5432 на периметре, сменить пароль, ограничить источники подключения и проверить журналы доступа.Атакующему достаточно публичного сайта и нескольких последовательных проверок, чтобы получить доступ к данным пользователей. Приоритет: немедленно закрыть внешний доступ к PostgreSQL и сменить учётные данные, затем исправить серверную проверку ролей и удалить служебный лог.
В игре цепочка собрана за несколько минут. В реальном проекте проверяются десятки гипотез, роли, интеграции и бизнес-сценарии.