Всем салют, дорогие друзья! В этой статье я пошагово расскажу, как за полчаса комплексно проверить сайт на наличие уязвимостей, даже если вы не хакер.
Сейчас большинство статей в интернете по теме поиска уязвимостей на своем сайте делятся на два типа: это либо банальный список онлайн-сканеров без подробных инструкций как ими пользоваться, либо хардкорные мануалы для фанатов информационной безопасности и прочих хакеров, где без Линукса не разобраться.
Не все из моих подписчиков такие, поэтому было решено сделать статью, где я максимально просто и подробно рассмотрю процесс, наглядно и пошагово показав, как с помощью таких инструментов самостоятельно проверить интересующий сайт, а также, как разобраться в сгенерированных отчетах.
Что будем проверять:
Доступ к серверу и исходным кодам
Уязвимости веб-серверов (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
На сегодня у меня все.
Продолжим в следующей статье, которая выйдет совсем скоро!
Comments