top of page

Руководство по поиску уязвимостей на сайте | Часть 1


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


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


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

 

Что будем проверять:

  • Доступ к серверу и исходным кодам

  • Уязвимости веб-серверов (Apache или NGINX)

  • SQL инъекции

  • Межсайтовый скриптинг (XSS).

  • Устойчивость приложения и сервера к перебору паролей

  • Получение доступа к системным каталогам

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

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

  • Многочисленные SQL инъекции

  • XSS уязвимости

  • Простой пароль для ssh доступа

  • Открытый ftp

  • Отсутствие защиты от перебора паролей

  • База данных, доступная из интернета с простым паролем

  • Слишком широкие права доступа к папкам и файлам

В общем все так, как делать не надо. Но многие все равно делают :)

 

1. Проверяем сетевую инфраструктуру.

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


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

К несчастью владельцев сайтов, сейчас, чтобы все это узнать, нужно лишь здравое любопытство и утилита nmap.

Nmap - это набор инструментов для сканирования сетевой инфраструктуры веб-сервиса. Он может быть использован для проверки безопасности, для идентификации запущенных серверных приложений.


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

Интересный факт: сyществует целая галерея фильмов, где утилита nmap используется для кибератак. Часть представлена ниже. Более полный список и разбор можно посмотреть по ссылке

Ну что, картинки посмотрели, теперь можно и поработать! Приступаем к делу.

 

1.2 Устанавливаем nmap

В установке нет ничего сложного. Примеры установки покажу на примере Windows. В дистрибутивах Linux последняя версия nmap обычно установлена по умолчанию.


1.2.1 Установка на Windows 10

Перейдите по ссылке загрузки nmap и загрузите последнюю стабильную версию. Дальше запустите от имени администратора. Программа установки по умолчанию предложит установить все компоненты, галочки можно не снимать. Описывать шаги далее подробно ( Примите лицензионное соглашение и тд) не буду, там все легко.


1.2.2 Запуск nmap на Windows

Запускать nmap можно как в режиме графического интерфейса, так и через командную строку.


Для запуска графической оболочки введите в строку поиска nmap и в результатах выберите nmap - Zenmap GUI


Для дальнейшей работы вы можете вводить нужные команды в поле "Команда", а затем нажимать на кнопку Сканирование. Результаты сканирования в виде текстового отчета вы можете посмотреть в окне, которое я старательно подписал "Отчет"


Нам ближе использование nmap через командную строку aka консоль. Для запуска командной строки введите "cmd" в строку поиска на панели инструментов. Нажмите Enter и затем откроется командная строка. Дальше прямо в нее можно вводить nmap команды.


Командная строка в Windows 10 c введенной командой nmap выглядит вот так:


1.2.3 Устанавливаем скрипты

Также нам надо установить скрипт nmap_vulners, который будет проводить проверку на то, содержатся ли уязвимости в ПО, которое мы используем. Для его установки нужно скачать файлы скрипта и перенести файлы http-vulners-regex.nse и vulners.nse в C:\Program Files (x86)\Nmap\scripts.


1.2.4 Начинаем проверку

Для начала запускаем сканирование сервера командой ниже, чтобы выяснить какие порты используются и для чего. Команда выглядит так (подставьте свой ip или домен). Команду нужно вводить в окне консоли, либо если вы используете Zenmap GUI, то в поле "Команда" (пример выше):


  • Параметр T5 отвечает за скорость анализа сервера. Скорость можно менять от T0 до T5, где T0 - очень медленная скорость анализа, а T5 - очень быстрая. Если вы не хотите сильно нагружать сервер, то используйте T2.


  • Параметр -p- означает, что мы будем проверять весь диапазон портов ('это займет около 10 минут) . Его можно убрать и тогда скрипт просканирует не все порты, а только 1000 первых (самые распространенные).


Ответ будет выглядеть примерно так:


Из отчета мы видим, что nmap отобразил порты (под колонкой PORT), которые активны. В данном случае у меня используются:

  • Порт 21 занят под FTP

  • Порт 22 занят под SSH.

  • Порт 80 прослушивается сервером Apache.

  • Порт 3306 используется MySQL

Теперь запустис скрипт, который проверит уязвимости в ПО на сервере. Для этого пишем следующую команду с указанием портов, которые будем проверять. Вам нужно будет заменить список портов на свои:


Пример отчета. Ссылки на описание уязвимости идут после строки vulners (пример такой строки со ссылкой в отчете: CVE-2014-9278 4.0 https://vulners.com/cve/CVE-2014-9278)


Как видите из отчета, скрипт проанализировал активное ПО нашего сервера и любезно предоставил ссылки с описанием каждой найденной уязвимости. Что согласитесь, очень удобно как нас.


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

nmap -T5 -sV -Pn 161.35.92.161 --script=vulners.nse -p22,80,443,8080,8443,3306,20,21,23 > result.txt


2. Проверяем устойчивость к перебору.

В нашем случае nmap определил, что на сервере есть ssh, ftp и mysql. Попробуем проверить насколько устойчивые пароли используются.


2.1 SSH

Вводим следующую команду (напомню, что вводить нужно либо в консоль, либо в поле "Команда" программы Zenmap GUI:

nmap --script ssh-brute -p22 161.35.92.161 --script-args userdb=users.lst,passdb=passwords.lst

В случае успеха (процесс не быстрый) скрипт выведет подобранный пароль и логин .


Подобранные пары логин\пароль будут выведены после строчки Accounts:

Кроме того, можно расширить стандартные списки паролей и пользователей от nmap, заменив файлы users.lst и passwords.lst . Различные базы для брутфорса можно найти в этом gitbub репозитории. Файлы с базой паролей можно разместить в папке nmap/nselib/data


2.2 FTP

Теперь проверяем FTP порт следующей командой:

nmap -d --script ftp-brute -p 21 161.35.92.161

Аналогично, сервис выведет подобранные пары логинов и паролей:


2.3 MySQL

Проверяем доступен ли анонимный вход.

nmap -sV --script=mysql-empty-password <target>

В случае успеха:


Пытаемся подобрать пару логин\пароль для входа в базу данных mysql:

nmap --script mysql-brute -p 3306 <target> --script-args userdb=users.lst, passdb=passwords.lst

Также если у вас используются CMS (WordPress, Joomla, Drupal, Bitrix) и другие базы данных (Mongo, Postgres, Redis), то можно найти готовые скрипты для проверки устойчивости ваших паролей и форм. Ищите по ключевым словам:

<name_of_CMS_or_DB> brute force nmap
 

На сегодня у меня все.

Продолжим в следующей статье, которая выйдет совсем скоро!


1 409 просмотров

Недавние посты

Смотреть все
bottom of page