3. Разведка и сбор информации (Reconnaissance) о веб-сайте

Сбор информации об атакуемом объекте является самым первым и важным шагом в процессе тестирования на уязвимость. В процессе разведки нам необходимо собрать как можно больше информации, к ним относят следующие:

  • Серверные технологии:
    • Операционная система сервера (Windows, Linux)
    • Веб-сервер (Apache, IIS, Nginx)
    • Система Управления Контентом (CMS - Content Management System). Например, Joomla, Drupal, WordPress.
    • Фреймворк (CakePHP, Laravel и так далее)
    • Язык, на котором написано приложение (PHP, Python и другие)
    • Шаблонизатор. Страницы на сайте могут формироваться по определенному шаблону, что упрощает разработку. Обычно, если сайт построен с использованием фреймворка, то в нем уже имеется встроенный шаблонизатор, однако разработчик может установить более предпочтительный вариант.
  • Клиентские технологии:
    • JavaScript библиотеки (jQuery)
    • JavaScript фреймворки (Vue, Angular и прочее)
    • Стили для оформления сайта (могут быть встроенные или скачиваемые из внешнего ресурса)
    • Различные ресурсы CDN
  • Открытые порты и запущенные службы – возможно на сервере, помимо веб-службы, запущены и другие сетевые службы, которые могут быть использованы для взлома системы.
  • Структура сайта – определяем видимые и скрытые каталоги, ссылки и файлы сайта. Смотрим, как устроена навигация по страницам.
  • Точки доступа – приложение может получать входные данные для совершения определенных действий, например отобразить, сохранить или удалить что-нибудь. Обычно для этих целей используются HTML формы или уже заранее подготовленные ссылки на странице. Входные данные передаются через параметры в POST/GET/PUT запросах. Нашей задачей является найти такие формы/ссылки и их параметры.

Чтобы найти перечисленную информацию используют следующие методы:

  • Анализ и проверка загруженного HTML/JS кода в браузере
  • Анализ HTTP заголовков ответа сервера
  • Spidering/Crawling – автоматический веб-серфинг, с помощью которого определяется структура сайта, его каталоги, файлы и ссылки.
  • Перебор по словарю – определение скрытых каталогов, файлов и параметров с помощью большого списка общепринятых названий файлов и каталогов.
  • Онлайн сервисы, которые постоянно сканируют сайты. К таким сервисам относят Shodan, Censys и другие.
  • Google Dork – Google также собирает всевозможные данные о сетевых устройствах. С помощью специальных запросов можно собрать требуемую информацию, если таковая имеется.
  • Интернет-архив – старые и некогда удаленные страницы могут быть сохранены в архиве. Сервис (archive.org) также сканирует веб-сайты и создает так называемые скриншоты (snapshot) страниц с таймкодами.
  • Анализ страниц c ошибками и отладочными сообщениями. Если на сайт отправить неверный или искаженный запрос, то сервер может сгенерировать сообщение об ошибке. Иногда такие сообщения содержат довольно интересные данные.

В англоязычной литературе вы можете встретить такие термины, как Web Fingerprinting и Web Enumeration. Задачей Fingerprinting является определение типа и версии сервера, задачей Enumeration – поиск задействованных веб-технологий на сервер. Этими двумя задачами мы и займемся в этой главе.