Перечисление HTTP-сервисов в Nmap

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/output_formats -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/save_output -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/port_scanning -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/target_specification -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/os_version_detection -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/service_detection -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/scripting_basics -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} nmap/script_management -.-> lab-547098{{"Перечисление HTTP-сервисов в Nmap"}} end

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

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

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

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

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

sudo nmap --script http-enum 192.168.1.1

Эта команда говорит Nmap:

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

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http
|_http-enum:
|  /icons/: Возможно, интересная директория с перечнем на 'apache/2.4.18 (ubuntu)'
|  /robots.txt: Файл Robots
|_ /server-status/: Страница статуса сервера

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

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

  • /icons/: Директория, которая может содержать иконки и потенциально раскрыть информацию о веб-сервере.
  • /robots.txt: Файл, который указывает, какие части веб-сайта не должны быть индексированы веб-роботами.
  • /server-status/: Страница, которая отображает информацию о статусе сервера.

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

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

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

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

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

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

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

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

sudo nmap --script http-enum -p 80 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.000087s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-enum:
|  /index.html: Возможно, интересный файл
|_ /robots.txt: Файл Robots

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

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

Добавьте агент пользователя с помощью nmap --script http-enum --script-args http.useragent=Test 192.168.1.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 192.168.1.1

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

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

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

sudo nmap --script http-enum --script-args http.useragent=Test 192.168.1.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 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http
|_http-enum:
|  /icons/: Возможно, интересная директория с перечнем на 'apache/2.4.18 (ubuntu)'
|  /robots.txt: Файл Robots
|_ /server-status/: Страница статуса сервера

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

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

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

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

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

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.000087s latency).
PORT   STATE SERVICE
80/tcp open  http
|_http-enum:
|  /index.html: Возможно, интересный файл
|_ /robots.txt: Файл Robots

Nmap done: 1 IP address (1 host up) scanned in 0.87 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.000087s latency).
PORT   STATE SERVICE
80/tcp open  http
|_http-enum:
|  /index.html: Возможно, интересный файл
|_ /robots.txt: Файл Robots

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

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

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

Просмотрев эти результаты, вы можете лучше понять структуру веб - сервера и определить потенциальные области для дальнейшего исследования. Например, вы можете использовать веб - браузер для посещения /index.html и /robots.txt, чтобы увидеть, что они содержат.

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

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

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

Во - первых, давайте выполним баннерное сканирование порта 80 целевого объекта (127.0.0.1) с использованием Nmap. Мы будем использовать параметр -sV, который включает обнаружение версии:

sudo nmap -sV -p 80 127.0.0.1

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

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

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
80/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 выявил потенциальные файлы и директории, такие как /index.html и /robots.txt.

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

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

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

Резюме

В этом лабе участники научились перечислять HTTP - службы с использованием скрипта http-enum в Nmap. Они выполняли команды для сканирования конкретных IP - адресов, таких как 192.168.1.1 и 127.0.0.1, целевым портом был 80, добавлялся пользовательский агент и результаты сохранялись в текстовый файл. В лабе также подчеркивалось использование привилегий суперпользователя для некоторых операций и важность получения разрешения для сканирования в реальном мире.

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