Сканирование и базовые уязвимости: веб, сервисы, конфигурации
В прошлых статьях мы заложили основу.
Вы действуете законно и этично и тренируетесь в безопасной лаборатории.
Вы понимаете базу: IP, порты, DNS, процессы, права доступа и команды.
Вы умеете делать разведку: собирать инвентарь поверхности атаки и превращать его в план.Теперь мы соединяем это в практический навык: аккуратное сканирование и поиск базовых уязвимостей, которые чаще всего встречаются у новичков и в реальных системах.
Под “базовыми” здесь понимаются не “простые взломы”, а типовые проблемы:
лишние открытые сервисы
неверные настройки (misconfiguration)
устаревшие компоненты
слабая аутентификация
избыточная информация в ответах сервиса> “Security misconfiguration is one of the most common issues.” OWASP Top 10:2021
Рамки безопасности перед сканированием
Сканирование и перечисление (enumeration) почти всегда относятся к активным действиям. Вне лаборатории это допустимо только при явном разрешении и в рамках scope.
Практическая политика курса для этой статьи.
Сканируем только свои ВМ и учебные стенды (DVWA, Juice Shop, Metasploitable) в Host-only сети.
Не используем действия, которые могут создать высокую нагрузку.
Не делаем подбор паролей, если это не выделено отдельным разрешением и заданием.
Любое наблюдение превращаем в заметку: команда → результат → вывод → рекомендация.!Схема показывает безопасный поток работы: лаборатория → сканирование → проверка → отчёт
Термины, которые нужны в этой теме
Сканирование портов — проверка, какие порты на цели отвечают как открытые.
Перечисление (enumeration) — уточнение, что именно работает на открытых портах.
Сервис — программа, которая слушает порт (например, веб-сервер, SSH).
Баннер (banner) — кусок информации, который сервис может “выдать” при подключении (иногда включает версию).
Конфигурационная ошибка (misconfiguration) — небезопасная настройка: лишние права, дефолтные учётки, debug-режим, открытые панели.Методика: от “что открыто” к “что опасно”
В этичном подходе важно не “нажимать всё подряд”, а двигаться по ступеням.
Шаг 1: зафиксировать контекст цели
Убедитесь, что вы в правильной сети (Host-only) и знаете IP цели.
Зафиксируйте дату, версию стенда и IP в заметках.
Проверьте связность (если это уместно в лаборатории).Примеры команд на атакующей ВМ.
Если ping не отвечает, это не “поломка”, а факт: ICMP мог быть запрещён.
Шаг 2: мягкое сканирование портов
Цель — получить список входных точек, а не “просканировать весь мир”.
Инструмент для лаборатории: Nmap.
Пример мягкого старта (малый набор портов).
Расшифровка параметров.
-sS — TCP SYN scan (часто используют как базовый).
-Pn — не полагаться на ping, сразу проверять порты.
-p — явно указать порты, чтобы не создавать лишнюю нагрузку.Когда есть первичный список, можно уточнять только то, что нужно, например версии сервисов.
Важно: определение версий — это попытка “поговорить” с сервисом. В реальных работах это может быть чувствительно, поэтому всегда сверяйтесь со scope.
Шаг 3: перечисление веба через HTTP
Если открыт 80 или 443, начинайте с безопасного осмотра ответа.
заголовки
коды ответа
редиректы
cookiesКоманда для заголовков.
Что полезно выписать.
HTTP/1.1 200 OK или другой статус
Server: (иногда показывает тип/версию)
Set-Cookie: (атрибуты безопасности)
Location: (куда редиректит)Справочник по кодам статуса: MDN Web Docs: HTTP response status codes.
Шаг 4: перечисление локально на цели (если вы админ стенда)
В лаборатории вы часто контролируете целевую ВМ. Это полезно, потому что вы учитесь видеть связь “порт → процесс → конфиг → риск”.
На целевой ВМ.
Вы ищете.
какой процесс слушает порт
от какого пользователя он запущен
есть ли сервисы, которые не должны быть доступныТиповые находки на уровне сервисов
Ниже — частые проблемы, которые обнаруживаются уже на этапе “порты и сервисы”.
Лишние открытые порты
Суть проблемы: сервис доступен по сети, хотя он не нужен пользователям.
Примеры.
открыта база данных (например, PostgreSQL) на интерфейсе, доступном из сети
открыт административный порт панели управленияПочему это риск.
увеличивается поверхность атаки
у сервисов могут быть дефолтные настройки, уязвимости, слабые паролиРекомендации.
закрыть порт firewall’ом
слушать сервис только на 127.0.0.1, если он нужен только локально
убрать сервис, если он не нуженУстаревшие версии сервисов
Суть проблемы: сервис имеет известные уязвимости, потому что давно не обновлялся.
Что можно сделать этично на базовом уровне.
зафиксировать версию из nmap -sV или баннера
сопоставить с политикой обновлений организации (в лаборатории — просто отметить факт)Важно: поиск конкретных эксплойтов и попытки эксплуатации в этом уроке не нужны. Здесь тренируем обнаружение и документирование.
“Слишком разговорчивые” баннеры
Суть проблемы: сервис сообщает лишнее.
точная версия веб-сервера
детали платформы
внутренние именаПочему это риск.
упрощает подбор атак под конкретные версииРекомендация.
минимизировать баннеры и заголовки, где это уместноБазовые веб-уязвимости и слабые настройки
Веб — самый частый слой для начинающего этичного хакера, потому что его легко наблюдать и документировать.
Отсутствие HTTPS там, где нужны учётные данные
Суть проблемы: логины/пароли или токены могут передаваться без шифрования.
Что вы проверяете.
есть ли https://
редиректит ли http:// на https://Пример.
Если это учебный стенд, отсутствие HTTPS может быть нормой для лаборатории. В реальном мире это фиксируется как серьёзный риск.
Справочник: MDN Web Docs: HTTPS.
Небезопасные атрибуты cookies
Суть проблемы: cookies аутентификации выданы без защитных флагов.
На что смотреть в Set-Cookie.
HttpOnly (уменьшает риск кражи cookie через XSS)
Secure (cookie отправляется только по HTTPS)
SameSite (уменьшает риск CSRF в типовых сценариях)Справочник: MDN Web Docs: Set-Cookie.
Лишняя информация в ошибках
Суть проблемы: приложение показывает стек-трейсы, пути на диске, SQL-ошибки.
Почему это риск.
раскрывает внутреннее устройство
даёт подсказки для дальнейших атакКак проверять аккуратно.
наблюдать ответы на “обычные” ошибочные запросы (например, несуществующая страница)
не пытаться ломать вводом агрессивных payload’ов в этом урокеОткрытые административные интерфейсы
Суть проблемы: панель администратора доступна всем.
Что считается “базовой проверкой”.
обнаружить факт существования /admin, /manager, /dashboard
посмотреть коды ответов 200/401/403/302Пример.
Правильный результат зависит от системы, но безопасный принцип такой: админка должна быть защищена аутентификацией и, часто, дополнительными ограничениями (например, доступ только из внутренней сети).
Дефолтные учётные данные
Суть проблемы: не изменены стандартные логины/пароли.
Важно: проверка дефолтных паролей в реальных системах допустима только при явном разрешении и правилах. В лаборатории — это легальный учебный сценарий.
Этичный способ мышления.
сначала ищем документацию стенда
затем проверяем в рамках разрешения
фиксируем факт и рекомендуем смену/запрет дефолтовБазовые уязвимости конфигурации и “гигиены”
Значительная часть проблем безопасности — это не “хитрые баги”, а ошибки настройки.
Принцип “минимума наружу”
Практический ориентир.
наружу публикуется только то, что нужно пользователю
всё служебное и внутреннее остаётся недоступным из сети пользователяТиповые ошибки.
.env файл доступен из веба
резервные копии лежат рядом с сайтом (например, backup.zip)
включён debug-режим
каталог логов доступен через вебСлабые права доступа и секреты в файлах
В лаборатории вы можете увидеть проблемы прямо в файловой системе цели.
секреты лежат в открытых файлах
ключи доступны “всем”
конфиги читаются не тем пользователемКоманды-ориентиры.
Смысл: вы тренируете навык находить места, где обычно лежат секреты. В реальной работе такие проверки должны быть в scope и согласованы.
Ненужные компоненты и демо-страницы
Суть проблемы: оставлены тестовые страницы, примеры, демо-конфиги.
Почему это риск.
они часто менее защищены
иногда содержат подсказки или даже секретыКак превращать находки в отчёт
Проверка безопасности ценна не списком “страшных слов”, а связкой: факт → риск → рекомендация.
Удобный шаблон одной находки.
Факт: что вы наблюдали (порт, заголовок, файл, настройка).
Доказательство: команда и краткий результат.
Риск: что плохого может случиться.
Рекомендация: что сделать.
Контекст: где это обнаружено (лаборатория, стенд, версия).Таблица: быстрый справочник “находка → почему важно → что делать”
| Находка | Почему это риск | Что обычно рекомендуют |
|---|---|---|
| Открыт лишний порт | Увеличивает поверхность атаки | Закрыть порт, ограничить интерфейс, удалить сервис |
| Сервис с устаревшей версией | Возможны известные уязвимости | Обновить, включить процесс патч-менеджмента |
| Баннеры и заголовки раскрывают версии | Помогает атакующему подобрать метод | Скрыть/минимизировать раскрытие информации |
| Нет HTTPS для логина | Перехват учётных данных | Включить TLS, редирект на HTTPS |
| Cookie без HttpOnly/Secure/SameSite | Повышает риски XSS/CSRF/перехвата | Настроить атрибуты cookies |
| Админка доступна всем | Цель для атак на учётки | Ограничить доступ, усилить аутентификацию |
| Дефолтные учётные данные | Компрометация “в один шаг” | Смена дефолтов, политика паролей |
| Debug/stack trace в ошибках | Утечки деталей системы | Выключить debug в проде, настроить обработку ошибок |
Частые ошибки новичков при сканировании
Сканировать “всё” вместо узкого, контролируемого набора.
Путать обнаружение и эксплуатацию: находка версии — это ещё не “взлом”.
Не записывать команды и результаты.
Делать выводы без подтверждения: заголовок Server может быть подменён.
Игнорировать контекст: в лаборатории допустимо больше, чем в реальных системах.Итог
В этом уроке вы научились главному практическому циклу этичного хакера на раннем этапе.
Сканирование выявляет входные точки.
Перечисление объясняет, что это за точки.
Базовые уязвимости часто лежат в конфигурации и “гигиене”.
Результат работы — не “магия”, а воспроизводимый отчёт: факт → риск → рекомендация.Дальше по курсу этот навык станет основой для более конкретных проверок (аутентификация, управление доступом, типовые классы веб-уязвимостей) — по-прежнему в рамках закона, этики и безопасной лаборатории.