4.1. Сканирование веб-сайта с NMAP

 

Введение

В предыдущих уроках мы уже использовали Nmap для сканирования сервера. В результате были обнаружены некоторые ссылки, серверные технологии и открытые порты. В этом уроке мы затронем тему сканирования веб-сервера с Nmap более подробно. Для сканирования мы будем использовать скриптовый движок NSE (Nmap Scripting Engine).

Nmap, установленный в Kali, уже содержит определенное количество скриптов. Каждый скрипт выполняет лишь определенную задачу, например сканирование на наличие уязвимости SQLi, XSS и так далее. Весь список скриптов вы можете найти в каталоге /usr/share/nmap/scripts/:

Список установленных Nmap скриптов в Kali

На момент написания статьи в папке содержалось 606 скриптов. Названия скриптов следуют определенным правилам. В начале идет название протокола, например http или ftp, а затем название уязвимости или действия, которое выполняет скрипт.

Так как нашей задачей является сканирование веб-сервера, то нам необходимо найти скрипты, которые начинаются на http. Вы можете использовать файловый менеджер для просмотра файлов либо воспользоваться терминалом. Для этого выполните команду ls -l /usr/share/nmap/scripts/ | grep http:

Отображение NMAP скриптов для сканирования сайта

Первая команда (ls- l) отображает все файлы в указанном каталоге, а вторая (grep) – фильтрует результат по ключевому слову.

 

Тестирование конкретной уязвимости

Как уже было ранее сказано Nmap содержит скрипты для тестирования определенной уязвимости. В качестве примера рассмотрим тестирование на уязвимости Cross Site Scripting (XSS).

В качестве примера рассмотрим приложение Mutillidae. Для тестирования воспользуемся скриптом http-unsafe-output-escaping. Документация к нему доступна здесь. Команда будет выглядеть так:

nmap --script=http-unsafe-output-escaping --script-args url="/mutillidae" 10.0.2.4 -p 80,

где

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

-p – указывает какой порт тестировать. В данном курсе мы используем стандартный HTTP порт 80.

Результат выглядит следующим образом:

Результат сканирования на XSS с Nmap

Найденные ссылки вероятно уязвимы XSS, однако это еще надо проверить. О том, как проверить ту или иную уязвимость, мы рассмотрим подробно в последующих уроках.

Аналогичным образом мы можем протестировать и другие скрипты.

 

Сканирование по категориям, запуск множества скриптов

Наличие большого количества скриптов предоставляет больше возможностей для сканирования сайта, но в то же время запуск каждого скрипта отнимает много времени. Существует ли способ запуска сразу нескольких скриптов?

Конечно, и даже 3. 

1-й способ

Если вам нужно запустить несколько скриптов, то достаточно просто указать их через запятую. Синтаксис команды выглядит так: nmap –script скрипт1,скрипт2,скрипт3.  Программа поочередно запустит указанные скрипты и отобразит результат сканирования для каждого скрипта.

2-й способ

Если скриптов очень много, то можно воспользоваться маской в названии скрипта. Например, нам нужно запустить все скрипты, которые начинаются на http. Для этого после слова http мы указываем маску *. Команда будет выглядеть так:

nmap –script=http-* 10.0.2.4 -p 80

3-й способ

Мы можем запустить группу скриптов из определенной категории. Дело в том, что Nmap группирует скрипты по категориям. Указав конкретную категорию в команде, программа запустит необходимую группу скриптов. Ниже представлена таблица категорий:

Название категории

Описание

auth

Методом подбора (Лобовая атака Brute force) программа пытается взломать пароли на страницах входа

discovery

Используется для сбора подробной информации об атакуемом объекте

dos

Скрипты из этой категории вызывают отказ в обслуживании. Однако основная цель – это выявить уязвим ли хост к атаке DoS.

exploit

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

malware

Если удаленный хост заражен бэкдором или другим вредоносным файлом, который работает по сети, программа может его обнаружить

safe

Безопасные тесты, которые позволяют обнаружить базовую информацию о цели

vuln

Тестирование на наличие уязвимостей

 

Более подробно обо всех категориях вы можете почитать здесь.

В качестве примера запустим скрипты из категории vuln:

nmap –script “vuln” 10.0.2.4 -p 80

Результат сканирования сервера с Nmap

Если присмотреться к выводу программы, то вы обнаружите, что Apache сервер имеет уязвимость CVE-2011-3192, которая способна вызвать отказ в обслуживании (атака DoS). Данную уязвимость мы бы могли выявить и вручную. Достаточно в поисковике ввести фразу “apache 2.2.14 vulnerability” и отобразится большой список уязвимостей. К некоторым из них даже прилагается и сам эксплойт. К сожалению, Nmap, да и любой другой сканер, не может обнаружить абсолютно все имеющиеся уязвимости, так как полностью зависит от наличия соответствующих скриптов и плагинов.

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

nmap –script “vuln,exploit” 10.0.2.4 -p 80.

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

 

Добавление нового скрипта

Что делать, когда нужного вам скрипта нет в списке установленных?

Вы можете создать свой собственный, если знакомы с языком программирования Lua, или скачать из сторонних источников, например GitHub.

Процесс установки довольно прост.

Если необходимо скачать только один файл, то есть сам скрипт, то сохраните его в каталоге /usr/share/nmap/scripts/. Однако, если для работы скрипта необходимо скачать и другие файлы, то лучше создайте отдельную папку и в нем уже сохраните все файлы. Для всех операциях в этом каталоге вам понадобятся расширенные права, поэтому все команды выполняйте с помощью команды sudo.

Затем необходимо обновить базу скриптов командой sudo nmap –script-updatedb.

Если скрипт был сохранен в общем каталоге /usr/share/nmap/scripts/, то запускается он стандартным способом, как и все скрипты.

Если же скрипт был сохранен в отдельной папке, например так /usr/share/nmap/scripts/new_folder/, то запускается данный скрипт следующим образом:

nmap –script=new_folder/new_script.nse target,

то есть мы просто указываем папку, в которой хранится сам файл.