Главная проблема для веб-разработчика это всегда безопасность сайта от взлома и кражи данных. Мы рассмотрим уязвимости сайтов, как их проверить и какие существуют для этого программы.
Типы уязвимостей сайтов
При создании веб-страниц используется много смежных электронных технологий. Какие-то являются совершенными и проверены временем, а какие-то новые и ещё не обкатанные. В любом случае имеется масса разновидностей уязвимостей сайтов:
- XSS. Каждый сайт обладает небольшими формами. С их помощью пользователи вводят данные и получают какой-либо результат, проводят регистрации или отправляют сообщения. Подстановкой в эти формы специальных значений можно спровоцировать выполнение определённого скрипта, что может вызвать нарушение целостности сайта и компрометирование данных.
- SQL-инъекция. Очень распространённый и эффективный способ получить доступ к конфиденциальным данным. Происходить это может либо через адресную строку, либо через формы. Процесс проводится путем подстановки значений, которые могут не отфильтровываться скриптами и выполнять запросы в базу данных. А при должных знаниях это может вызвать нарушение безопасности.
- HTML-ошибки. Практически то же самое, что и XSS, но внедряется не скрипт-код, а HTML.
- Уязвимость сайтов, связанная с размещением файлов и каталогов в местах по умолчанию. Например, зная структуру веб-страниц, можно добраться до кода административной панели.
- Недостаточная настройка защиты операционной системы на сервере. Если таковая уязвимость присутствует, то у злоумышленника появляется возможность выполнить произвольный код.
- Плохие пароли. Одна из самых очевидных уязвимостей сайтов — использование слабых значений для защиты своей учётной записи. Особенно, если она с правами администратора.
- Переполнение буфера. Используется при замене данных из памяти, вследствие чего можно внести свои коррективы. Встречается при задействовании несовершенного программного обеспечения.
- Замена страниц веб-ресурса. Воссоздание точной копии сайта, зайдя на который пользователь может не заподозрить подвоха и ввести свои личные данные, через некоторое время переходящие злоумышленнику.
- Отказ в обслуживании. В основном под этим термином понимают атаку на сервер, когда он получает большое количество запросов, которые не может обработать и попросту «падает» или же становится не способным обслужить настоящих пользователей. Уязвимость же заключается в том, что фильтр по IP не настроен должным образом.
Поиск уязвимостей сайта
Специалисты по безопасности проводят особый аудит веб-ресурсов на наличие ошибок и недочётов, способных привести к взлому. Такая проверка сайта называется пентестинг. В процессе анализируется исходный код, используемые CMS, наличие уязвимых модулей и много других интересных проверок.
SQL-инъекция
Этот тип проверки сайта устанавливает, фильтрует ли скрипт полученные значения при составлении запросов в базу данных. Провести простейшее тестирование можно и вручную. Как найти уязвимость SQL на сайте? Сейчас будет рассмотрено.
К примеру, имеется некий сайт мой-сайт.рф. На его главной странице есть какой-либо каталог. Зайдя в него, можно обнаружить в адресной строке что-то наподобие мой-сайт.рф/?product_id=1. Есть вероятность, что это и есть запрос в базу. Для поиска уязвимостей сайта сначала можно попробовать подставить в эту строку одинарную кавычку. В итоге должно быть мой-сайт.рф/?product_id=1'. Если при нажатии клавиши "Ввод" на странице появилось сообщение об ошибке, то уязвимость имеется.
Теперь можно использовать различные варианты подбора значений. Применяются операторы объединения, исключения, комментирования и многие другие.
XSS
Данный тип уязвимости может быть двух видов — активный и пассивный.
Активный подразумевает внедрение участка кода в базу данных или прямо в файл на сервере. Он более опасен и непредсказуем.
Пассивный режим предусматривает заманивание жертвы на определённый адрес сайта, содержащего вредный код.
С помощью XSS злоумышленник может украсть Cookies. А в них могут содержаться важные данные пользователя. Ещё более ужасными последствиями обладает кража сессии.
Также хакер может использовать скрипт на сайте таким образом, чтобы форма в момент отправки её пользователем отдавала информацию прямиком в руки злоумышленнику.
Автоматизация процесса поиска
В сети можно найти массу интересных сканеров уязвимостей сайта. Какие-то поставляются отдельно, какие-то идут в комплекте с несколькими подобными и объединены в один общий образ, наподобие Kali Linux. Далее будет представлен обзор наиболее популярных средств для автоматизации процесса сбора информации об уязвимостях.
Nmap
Самый простой сканер уязвимостей сайта, который может показать такие подробности, как операционная система, используемые порты и сервисы. Типичный пример применения:
nmap -sS 127.0.0.1, где вместо локального IP нужно подставить адрес реального тестируемого сайта.
Вывод сообщит о том, какие сервисы запущены на нем, и какие порты в этот момент открыты. На основе этой информации можно попробовать использовать уже выявленные уязвимости.
Вот несколько ключей nmap для более пристрастного сканирования:
- -A. Агрессивное сканирование, которое вывалит очень много информации, но может занять значительное время.
- -O. Пытается определить операционную систему, задействованную на сервере.
- -D. Подменит IP адреса, с которых производится проверка, чтобы при просмотре логов сервера невозможно было определить, откуда произошла атака.
- -p. Диапазон портов. Проверка сразу нескольких служб на наличие открытых.
- -S. Позволит указать нужный IP адрес.
WPScan
Данная программа для сканирования сайта на уязвимость входит в дистрибутив Kali Linux. Ориентирован на проверку веб-ресурсов на системе управления контентом WordPress. Написана она на Ruby, поэтому запускается примерно так:
ruby ./wpscan.rb --help. Эта команда покажет все доступные ключи и литеры.
Для запуска простой проверки можно использовать команду:
ruby ./wpscan.rb --url какой-то-сайт.ру
В общем WPScan - довольно простая в использовании утилита для проверки своего сайта на "ВордПресс" на уязвимости.
Nikto
Программа проверка сайта на уязвимости, которая также имеется в дистрибутиве Kali Linux. Обладает богатым функционалом при всей своей простоте:
- сканирование по протоколам с HTTP и HTTPS;
- обход многих встроенных инструментов обнаружения;
- множественное сканирование портов, даже в нестандартном диапазоне;
- поддержка использования прокси-серверов;
- имеется возможность реализации и подключения плагинов.
Для запуска nikto нужно, чтобы в системе был установлен perl. Простейший анализ выполняется так:
perl nikto.pl -h 192.168.0.1.
Программе можно «скормить» текстовый файл, в котором перечислены адреса веб-серверов:
perl nikto.pl -h file.txt
Данная утилита поможет не только специалистам по безопасности для проведения пентестов, но и администраторам сетей и ресурсов для поддержания работоспособности сайтов.
Burp Suite
Очень мощный инструмент для проверки не только сайтов, но мониторинга любой сети. Обладает встроенной функцией модификации передаваемых запросов на тестируемый сервер. Умный сканер, способный в автоматическом режиме искать по нескольку типов уязвимостей сразу. Имеется возможность сохранить результат текущей деятельности, а затем возобновить её. Гибкость, позволяющая не только использовать сторонние плагины, но и писать свои.
Утилита имеет собственный графический интерфейс, что, несомненно, удобно, особенно для начинающих пользователей.
SQLmap
Наверное, самый удобный и мощный инструмент для поиска SQL и XSS уязвимостей. Список его достоинств можно выразить так:
- поддержка практически всех видов систем управления базами данных;
- умение использовать шесть основных способов определения и применения SQL-инъекций;
- режим перебора пользователей, их хешей, паролей и других данных.
Перед использованием SQLmap обычно сначала находят уязвимый сайт посредством дорков — заготовок запросов поисковых систем, помогающих ориентировочно отсеять необходимые веб-ресурсы.
Затем адрес страниц передаётся программе, и она проводит проверку. При успешном определении уязвимости утилита может сама её и использовать, получая полный доступ к ресурсу.
Webslayer
Небольшая утилита, которая позволяет провести атаку перебором. Может «брутфорсить» формы ресурса, сессии, параметры сайта. Поддерживает многопоточность, что отлично сказывается на производительности. Также может рекурсивно подбирать пароли во вложенных страницах. Имеется поддержка прокси.
Ресурсы для проверки
В сети присутствует несколько инструментов для проверки уязвимости сайтов онлайн:
- coder-diary.ru. Простой сайт для тестирования. Достаточно ввести адрес проверяемого ресурса и нажать «Проверить». Поиск может занять длительное время, поэтому есть возможность указать адрес своей электронной почты для того, чтобы по завершении проверки результат пришёл прямо в ящик. В базе сайта имеется около 2500 известных уязвимостей.
- https://cryptoreport.websecurity.symantec.com/checker/. Онлайн-сервис проверки наличия сертификата SSL и TLS от компании Symantec. Требуется только адрес проверяемого ресурса.
- https://find-xss.net/scanner/. Проект сканирует отдельный файл PHP сайтов на уязвимости или их архив в формате ZIP. Можно указать типы проверяемых файлов и символы, по которым экранируются данные в скрипте.
- http://insafety.org/scanner.php. Сканер для тестирования сайтов на платформе "1С-Битрикс". Простой и понятный интерфейс.
Алгоритм проведения проверки на уязвимости
Любой специалист по сетевой безопасности выполняет проверку по простому алгоритму:
- Сначала он вручную или с помощью автоматизированных инструментов анализирует, имеются ли на сайте уязвимости. Если да, то он определяет их тип.
- В зависимости от разновидности присутствующей уязвимости выстраивает дальнейшие ходы. Например, если известна CMS, то подбирается соответствующий метод атаки. Если же это SQL-инъекция, то подбираются запросы в базу данных.
- Главной задачей является получение привилегированного доступа к административной панели. Если же такового добиться не удалось, может стоит попробовать формы и подделку адреса с внедрением в него скрипта с последующей передачей жертве.
- Если какая-либо атака или проникновение удалось, то начинается сбор данных: имеются ли ещё уязвимости, какие недочёты присутствуют.
- На основе полученных данных специалист по безопасности сообщает владельцу сайта о существующих проблемах и способах их устранения.
- Уязвимости устраняются его руками или с привлечением сторонних мастеров.
Несколько советов по безопасности
Тем, кто самостоятельно занимается разработкой собственного сайта, помогут это простые советы и рекомендации.
Входящие данные нужно фильтровать таким образом, чтобы скрипты или запросы не могли запуститься автономно или отдать данные из базы.
Использовать сложные и стойкие пароли для входа в административную панель, чтобы избежать возможного брутфорса.
Если сайт строится на основе какой-либо CMS, нужно как можно чаще обновлять её и применять только проверенные плагины, шаблоны и модули. Не стоит перегружать сайт ненужными компонентами.
Чаще проверять журналы сервера на наличие подозрительных вхождений или действий.
Проверить собственный сайт несколькими сканерами и сервисами.
Правильная настройка сервера — залог его стабильной и безопасной работы.
По возможности нужно использовать сертификат SSL. Это позволит избежать перехвата личных и конфиденциальных данных между сервером и пользователем.
Инструменты для обеспечения безопасности. Имеет смысл установить или подключить программные средства для предотвращения проникновений и внешних угроз.
Заключение
Статья получилась объёмная, однако даже её не хватит для описания в подробностях всех аспектов сетевой безопасности. Для того чтобы справиться с задачей защиты информации, придётся изучить немало материалов и инструкций. А также освоить кучу инструментов и технологий. Можно обратиться за советом и помощью к профессиональным компаниям, которые специализируются на проведении пентестов и аудита веб-ресурсов. Хотя такие услуги и выльются в неплохую сумму, все же безопасность сайта может быть гораздо дороже как в экономическом плане, так и в репутационном.
Источники: fb.ru