3.2. Web Fingerprinting/Enumeration - Проверка HTTP заголовков

 

Какие данные ищем

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

  • Операционную систему сервера
  • ПО веб-сервера и его версию
  • Язык программирования, использованный для создания приложения
  • Фреймворк/CMS

Для этого ищем представленные ниже HTTP заголовки:

  • Server – передает версию и название веб-сервера, иногда и название операционной системы
  • Cookie – в них передаются сессионные токены/идентификаторы, названия которых специфичны и уникальны для всех серверных технологий. Ниже даны некоторые примеры:
    • JSESSIONID—The Java Platform
    • ASPSESSIONID—Microsoft IIS server
    • NET_SessionId—Microsoft ASP.NET
    • CFID/CFTOKEN—Cold Fusion
    • PHPSESSID—PHP
  • X-Powered-By – содержит название фреймворка и другое ПО
  • X-Generator – также содержит информацию о ПО
  • Нестандартные заголовки – разработчики иногда добавляют собственные заголовки для передачи некоторой информации. Через поисковик Google/Яндекс вы можете найти более подробную информацию о данном ПО.
  • Кроме того, сам порядок следования HTTP заголовков у многих веб-серверов отличается, что также является своего рода индикатором, даже если отсутствуют вышеперечисленные заголовки.

Проверять заголовки вы можете с помощью браузера и некоторых программ, о которых поговорим далее.

 

Проверка заголовков с помощью браузера

Откройте приложение bWAPP. В моем случае ссылка выглядит так: http://10.0.2.4/bWAPP/login.php. У вас может отличаться только IP адрес. Затем откройте панель разработчика с помощью Ctrl+Shift+I и перейдите на вкладку Network (Сеть):

Панель разработчика - вкладка network

 

Вначале вкладка пуста, поэтому обновите страницу и найдите сообщение с файлом login.php:

Выбор файла login.php

 

Если вы заметили, то мы как раз и пытаемся открыть данную страницу. В самой вкладке будут и другие сообщения со стилями и рисунками. Кликнете на найденный файл login.php, в правой части откроется панель с заголовками запроса и ответа. Нас интересуют заголовки ответа (Response Headers):

HTTP заголовки с информацией о сервере

Обратите внимание на обозначенные заголовки. Они содержат достаточно много информации. Не стоит доверять на 100% всему, что видите в данных заголовках, так как разработчики могут специально изменить их содержимое. Поэтому всегда ищем дополнительные маркеры.

 

Netcat

Netcat универсальная программа, которая используется для решения многих задач. С помощью нее вы также можете отобразить заголовки ответа сервера. Для этого откройте терминале в Kali и введите команду nc 10.0.2.4 80, где 10.0.2.4 адрес тестируемого сервера, а 80 – порт. Netcat установит TCP соединение и будет ждать дальнейших указаний. Поэтому введите HEAD / HTTP 1.1 и дважды нажмите Enter:

Отображение HTTP заголовков с помощью Netcat

 Иногда HEAD блокируют, поэтому вместо него можете использовать GET, однако в данном случае в терминале отобразится и HTML код.

 

Nmap

Nmap тоже обладает возможностью отобразить HTTP заголовки и детектировать операционную систему. Попробуйте выполнить команду sudo nmap -O 10.0.2.4:

Определение сервера с пощью Nmap

 Программа обнаружила тип и версию операционной системы с помощью опции -O. Программа также обнаружила открытые порты. Чтобы определить к каким службам они относятся достаточно добавить опцию -sV:

Вывод Nmap с опицей -sV

 Теперь напротив каждого порта отображается ПО и его версия.

Однако и это еще не все. Попробуем теперь отобразить HTTP заголовки с помощью скрипта http-headers. Команда будет выглядеть так: nmap -sV 10.0.2.4 --script=http-headers:

Вывод работы скрипта http-headers

 Для определения серверных технологий также рекомендую использовать скрипт http-enum:

Вывод работы скрипта http-enum

 По названию ссылки/каталога можно определить задействованные серверные технологии. В нашем случае присутствует WordPress (CMS), phpMyAdmin (для управления базами данных).

Сами скрипты можно также комбинировать, например, чтобы запустить одновременно оба скрипта достаточно выполнить такую команду nmap --script=http-enum,http-headers.

 

Whatweb

Whatweb еще один замечательный инструмент для определения серверных технологий, использует для этого множество методов. Достаточно ввести команду whatweb -v 10.0.2.4:

Определение серверных технологий с помощью whatweb

 Помимо самих технологий в конце отображаются и HTTP заголовки.