Перечисление HTTP-служб в Nmap

NmapBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе мы научимся перечислять HTTP-сервисы с помощью Nmap. Вы начнете с выполнения HTTP-перечисления на локальном хосте 127.0.0.1 с использованием скрипта http-enum. Затем вы просканируете порт 80, добавите пользовательский агент (user agent) и сохраните результаты перечисления. Наконец, вы просмотрите найденные HTTP-данные и сравните их со сканированием баннеров в терминале Xfce.

Помните, что в реальных сценариях вы должны сканировать сети и системы только с явного разрешения.

Запустите HTTP-перечисление с помощью nmap --script http-enum 127.0.0.1

На этом этапе мы будем использовать Nmap со скриптом http-enum для перечисления HTTP-сервисов на локальном хосте. Этот скрипт помогает выявлять потенциальные уязвимости и некорректные конфигурации путем обнаружения распространенных файлов и каталогов веб-сервера.

Прежде чем начать, кратко обсудим, что такое Nmap и скрипты NSE. Nmap ("Network Mapper") — это бесплатная утилита с открытым исходным кодом для обнаружения сетей и аудита безопасности. NSE (Nmap Scripting Engine) позволяет пользователям писать скрипты для автоматизации широкого спектра сетевых задач. Скрипт http-enum является одним из таких скриптов NSE, предназначенных для перечисления распространенных HTTP-ресурсов.

Для этой лабораторной работы мы будем нацеливаться на IP-адрес локального хоста 127.0.0.1. Это безопасный подход для обучения, поскольку мы сканируем собственную локальную машину.

Теперь выполним команду Nmap:

sudo nmap --script http-enum 127.0.0.1

Эта команда указывает Nmap:

  • sudo: выполнить команду с привилегиями суперпользователя, которые могут потребоваться для некоторых операций Nmap.
  • nmap: запустить инструмент Nmap.
  • --script http-enum: указать, что мы хотим использовать скрипт http-enum.
  • 127.0.0.1: целевой IP-адрес для сканирования (localhost).

После выполнения команды вы увидите вывод, аналогичный следующему (точный вывод будет зависеть от целевой системы):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds

Вывод показывает, что скрипт http-enum обнаружил несколько интересных ресурсов на порту 8080:

  • /robots.txt: файл, указывающий, какие части веб-сайта не должны сканироваться веб-роботами.
  • /session/: потенциально интересный каталог, который может содержать файлы или функциональность, связанные с сессиями.

Эти находки могут быть далее исследованы для выявления потенциальных уязвимостей или некорректных конфигураций.

Сканируйте порт 8080 с помощью nmap --script http-enum -p 8080 127.0.0.1

На этом этапе мы сосредоточим наше сканирование Nmap на конкретном порту, порту 8080, используя скрипт http-enum. Указание порта может помочь сузить область сканирования и предоставить более целенаправленные результаты. Мы будем сканировать 127.0.0.1, что является адресом обратной петли (loopback address), представляющим локальную машину. Это полезно для тестирования служб, работающих на вашей собственной системе.

Разберем команду, которую мы будем использовать:

sudo nmap --script http-enum -p 8080 127.0.0.1

Вот что означает каждая часть команды:

  • sudo: выполняет команду с привилегиями суперпользователя. Это может быть необходимо для получения точных результатов, особенно для портов с меньшими номерами.
  • nmap: запускает инструмент Nmap.
  • --script http-enum: указывает, что мы хотим использовать скрипт http-enum для перечисления HTTP-ресурсов.
  • -p 8080: эта опция указывает Nmap сканировать только порт 8080. Порт 8080 часто используется как альтернативный HTTP-порт, обычно для серверов разработки или прокси-сервисов.
  • 127.0.0.1: целевой IP-адрес, в данном случае адрес обратной петли, который относится к локальной машине.

Теперь выполните команду в вашем терминале:

sudo nmap --script http-enum -p 8080 127.0.0.1

Вывод будет выглядеть примерно так (точный вывод зависит от служб, работающих на вашей локальной машине):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds

В этом примере скрипт http-enum обнаружил /robots.txt и /session/. Это распространенные ресурсы на веб-серверах, и дальнейшее исследование может выявить больше информации о конфигурации сервера и потенциальных уязвимостях. Указав порт 8080, мы сфокусировали сканирование и получили результаты, специфичные для HTTP-сервиса, работающего на локальной машине.

Добавьте User-Agent с помощью nmap --script http-enum --script-args http.useragent=Test 127.0.0.1

На этом этапе мы настроим заголовок User-Agent, используемый скриптом http-enum. Заголовок User-Agent отправляется клиентом (в данном случае Nmap) серверу и идентифицирует клиентское программное обеспечение. Изменение User-Agent может быть полезно по нескольким причинам, например:

  • Обход базовых мер безопасности: Некоторые серверы могут блокировать запросы от известных инструментов сканирования. Изменение User-Agent может помочь избежать этих блокировок.
  • Тестирование поведения сервера: Вы можете наблюдать, как сервер реагирует на различные строки User-Agent.
  • Незаметность: Использование менее распространенного User-Agent может сделать ваши сканирования менее заметными.

Мы будем использовать опцию --script-args для изменения значения http.useragent.

Вот команда, которую мы будем использовать:

sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1

Разберем эту команду:

  • sudo: выполняет команду с привилегиями суперпользователя.
  • nmap: запускает инструмент Nmap.
  • --script http-enum: указывает, что мы хотим использовать скрипт http-enum.
  • --script-args http.useragent=Test: это ключевая часть. Она передает аргумент скрипту http-enum. В частности, она устанавливает переменную http.useragent в значение "Test". Это означает, что при отправке HTTP-запросов скрипт будет использовать "Test" в качестве заголовка User-Agent.
  • 127.0.0.1: целевой IP-адрес для сканирования (localhost).

Выполните команду в вашем терминале:

sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1

Вывод будет похож на вывод из первого шага, но HTTP-запросы, отправляемые на сервер, теперь будут включать заголовок User-Agent: Test. Вы не увидите User-Agent напрямую в выводе Nmap, но он будет использоваться в фоновом режиме во время сканирования.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds

Этот шаг демонстрирует, как настраивать скрипты Nmap с помощью опции --script-args. Это позволяет точно настраивать поведение скриптов и адаптировать их к конкретным ситуациям.

Сохраните результаты enum с помощью nmap --script http-enum -oN http_enum.txt 127.0.0.1

На этом этапе мы сохраним результаты работы скрипта http-enum в файл. Это крайне важно для последующего анализа и составления отчетов. Nmap предоставляет несколько опций для сохранения результатов сканирования в различных форматах. Мы будем использовать опцию -oN, которая сохраняет результаты в "обычном" (normal), читаемом человеком формате.

Вот команда, которую мы будем использовать:

sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1

Разберем эту команду:

  • sudo: выполняет команду с привилегиями суперпользователя.
  • nmap: запускает инструмент Nmap.
  • --script http-enum: указывает, что мы хотим использовать скрипт http-enum.
  • -oN http_enum.txt: эта опция указывает Nmap сохранить результаты в обычном формате в файл с именем http_enum.txt. Файл будет создан в вашем текущем каталоге (~/project).
  • 127.0.0.1: целевой IP-адрес для сканирования (адрес обратной петли).

Выполните команду в вашем терминале:

sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1

Вывод в терминале будет похож на вывод из предыдущих шагов, но помимо отображения результатов на экране, Nmap также сохранит их в файл http_enum.txt.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds

Чтобы убедиться, что файл был создан и содержит результаты сканирования, вы можете использовать команду cat для отображения содержимого файла:

cat http_enum.txt

В выводе вы должны увидеть результаты сканирования Nmap. Этот файл теперь может быть использован для дальнейшего анализа, составления отчетов или в качестве входных данных для других инструментов.

Просмотрите результаты HTTP в терминале Xfce

На этом этапе мы просмотрим HTTP-находки из файла http_enum.txt, который мы создали на предыдущем шаге. Мы будем использовать терминал Xfce и команду cat для отображения содержимого файла и анализа результатов.

Сначала убедитесь, что вы находитесь в каталоге ~/project. Именно здесь должен находиться файл http_enum.txt.

Чтобы просмотреть содержимое файла http_enum.txt, используйте следующую команду:

cat http_enum.txt

Эта команда выведет содержимое файла в ваш терминал.

Пример вывода (фактический вывод может отличаться в зависимости от цели):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds

Теперь давайте проанализируем вывод. Скрипт http-enum пытается идентифицировать потенциально интересные файлы и каталоги на веб-сервере. В этом примере он обнаружил:

  • /robots.txt: Этот файл содержит инструкции для веб-роботов (краулеров) о том, какие части веб-сайта не следует индексировать. Иногда он может раскрывать скрытые или конфиденциальные области сайта.
  • /session/: Это потенциально интересный каталог, который может содержать файлы, связанные с сессиями, конфигурационные файлы или другую конфиденциальную информацию.

Просматривая эти находки, вы можете лучше понять структуру веб-сервера и выявить области для дальнейшего исследования. Например, вы можете использовать веб-браузер для посещения http://127.0.0.1:8080/robots.txt и http://127.0.0.1:8080/session/, чтобы увидеть, что они содержат.

Этот шаг демонстрирует, как просматривать вывод скриптов Nmap и выявлять потенциально интересную информацию. Это является важной частью процесса разведки.

Сравните результаты с баннерным сканированием в терминале Xfce

На этом этапе мы выполним баннерное сканирование с помощью Nmap и сравним его результаты с находками скрипта http-enum. Баннерное сканирование (banner grabbing) — это техника, используемая для сбора информации о службе путем изучения баннера, который она представляет при установлении соединения. Это может раскрыть версию программного обеспечения и другие детали.

Сначала выполним баннерное сканирование порта 8080 цели (127.0.0.1) с помощью Nmap. Мы будем использовать опцию -sV, которая включает определение версии:

sudo nmap -sV -p 8080 127.0.0.1

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

Пример вывода:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).

PORT     STATE SERVICE VERSION
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.7.5)

Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds

В этом примере баннерное сканирование показывает, что веб-сервер — это SimpleHTTPServer 0.6, работающий на Python 3.7.5.

Теперь сравним эту информацию с находками скрипта http-enum, которые мы рассмотрели на предыдущем шаге. Скрипт http-enum определил потенциальные файлы и каталоги, такие как /robots.txt и /session/.

Сравнивая результаты баннерного сканирования и скрипта http-enum, мы можем построить более полную картину целевой системы. Баннерное сканирование предоставляет информацию о версиях программного обеспечения, в то время как скрипт http-enum раскрывает потенциальные файлы и каталоги. Эта комбинированная информация может быть ценной для выявления уязвимостей и планирования дальнейших атак.

Например, знание версии программного обеспечения веб-сервера позволяет искать известные уязвимости, специфичные для этой версии. Затем выявленные файлы и каталоги могут быть использованы для эксплуатации.

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

Резюме

В этой лабораторной работе участники научились перечислять HTTP-службы с помощью скрипта Nmap http-enum. Они выполнили команды для сканирования localhost (127.0.0.1), нацеливаясь на порт 8080, добавляя пользовательский агент (user agent) и сохраняя результаты в текстовый файл. Лабораторная работа подчеркнула необходимость использования привилегий суперпользователя для определенных операций и продемонстрировала безопасные методы сканирования путем использования localhost.

После выполнения сканирований участники просмотрели HTTP-находки и сравнили результаты с баннерным сканированием в терминале Xfce, что помогло им выявить потенциальные уязвимости и неправильные конфигурации на локальном веб-сервере. Этот практический подход предоставил опыт работы с техниками сетевой разведки.