Как найти уязвимость на сайте

.

Как найти и устранить SQL-уязвимость на сайте

Опубликовано в Защита веб-сайтов   15 Августа, 2017

SQL (structured query language, «язык структурированных запросов») – единый стандарт коммуникации, поддерживающий связь хозяина интернет-ресурса с базами данных.

Поскольку базы данных представляют собой один из основных инструментов в работе и поддержании сайтов, SQL-файлы находятся под пристальным вниманием хакеров. Для внедрения вредоносного кода они используют так называемые SQL-инъекции. С их помощью злоумышленники «читают» содержимое любых таблиц, удаляют, изменяют или добавляют информацию в базы, перезаписывают содержание локальных файлов и дают команды на выполнение произвольных команд.

Как найти уязвимость на сайте

Иными словами, – полностью перехватывают управление атакованным сайтом.

SQL-атаки опасны не только нарушением целостности базы данных сайта. Взломавший таким образом всего один сайт хакер способен перейти на страницы других интернет-ресурсов, размещённых на этом сервере. Более того, хищение личных данных пользователей из базы какого-нибудь сервиса грозит их распространением в оффлайне. Это привлекает внимание надзорных государственных органов, которые ответственность за нарушение приватности накладывают на владельцев интернет-страниц.

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

Как проверить сайт на уязвимость SQL

Определить степень незащищённости веб-ресурса и его подверженности SQL-инъекциям несложно даже в ручном режиме.

Проверка сайта на SQL-уязвимости — определение возможности скрипта на сайте отфильтровывать полученные значения при составлении запросов в базе данных.

Рассмотрим простейший тест на SQL-уязвимость, который способен провести и не разбирающийся в программировании человек. Для примера, возьмём условный адрес сайта тест.рф с размещённым на главной странице каталогом. При переходе в каталог в браузерной строке отображается адрес типа тест.рф/?product_id=1, – не исключено, что это и есть прямой запрос в базу данных. Для того, чтобы найти SQL-уязвимость, достаточно подставить в строку всего лишь одинарную кавычку (адрес будет выглядеть как тест.рф/?product_id=1′). Если при нажатии на клавишу enter страничка выдаёт сообщение об ошибке, то значит уязвимость базы действительно имеется. Дальше уже подкованному злоумышленнику остаётся только подобрать для взлома нужное значение.

Как проверить сайт при помощи сканера SQL-уязвимостей

Проверять вручную сайт на возможные SQL-инъекции неудобно. Сегодня программные комплексы для подобного рода тестирования есть практически у всех крупных антивирусных сервисов.
Среди популярных независимых платформ выделяется, к примеру, Sqlmap, сканер, работающий с большинством известных систем управления базами данных
SQL Injection – ещё один популярный кроссплатформенный инструмент, который используется при поиске SQL-уязвимостей. Этот сканер, однако, написан на языке Java, – соответственно, для успешного теста требуется установка в систему JRE (специализированной программной среды исполнения для Java).

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

Virusdie – надёжный помощник в поиске и устранении SQL-уязвимостей

Универсальное решение при борьбе с уязвимостями SQL предлагает крупный антивирусный сервис Virusdie.

Его отличие от стандартных сканеров в простоте и удобстве использования. Разработчики не предлагают ничего скачивать и устанавливать для запуска процессов сканирования, – вся работа происходит после подключения через облачные технологии.

Антивирусная платформа проверяет подключённые сайты в автоматическом режиме, находя и определяя вирусы, внедрённый вредоносный код и различные XSS/SQL инъекции. Кроме проверки сайта на SQL-уязвимости онлайн Virusdie предлагает эффективные способы разрешения возникших проблем и удаление уязвимостей в автоматическом или ручном режиме (в особо проблемных случаях – с привлечением технического персонала сервиса).

Важное преимущество для далёких от программирования людей заключается в том, что управление ведётся на основе сервисного интерфейса, без взаимодействия с панелями управления сервером или FTP и без переписывания доменных записей. Подключить сайт к Virusdie можно непосредственно по защищённым каналам HTTP/HTTPS, используя при этом уникальный для каждого пользователя файл синхронизации.

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

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

В своих прошлых статьях я нередко упоминал об различного рода уявимостях на сайтах. Это «Уязвимость в AdsManager на практике» и «Пример уязвимости в JCE», а также более обобщенно в других материалах. Для тех, кто не знает чем бекдор отличается от XSS я посвящу уже следующую статью «Описание распространненых уязвимостей».

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

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

Как найти уязвимость по логам?

Допустим,что вирус уже проник на сайт. Мы успешно (наверно) удалили все вирусы с сайта и задумались над защитой от дальнейшего вторжения. Здесь могут помочь мои советы из статьи «Как защитить сайт от попадания вирусов». Многие владельцы веб-страниц хотят знать, как вирус попал на сайт и как предотвратить заражение в дальнейшем. В таком случае требуется более детальный анализ появления вирусов на сайте. И я расскажу простой метод  поиска уязвимости, который поможет даже начинающему веб-мастеру.

Итак, для начала нам надо найти логи сервера. По умолчанию они находятся в отдельной папке logs выше директории сайта. Чаще всего имеют имена файлов access_log и error_log. Что делать, если не смогли найти их?

— Вариант первый, они у вас могут быть не включены в настройках сервера, поэтому стоит включить генерацию отчетов.

— Вариант второй, запросить логи у техподдержки, они подскажут, как вам поступить дальше.

Ищем шеллы на сайте!

Будем считать, что мы нашли необходимые файлы. Теперь нам надо найти шелл на сайте, именно сам исполняемый файл, а не системные файлы со вставками вредоносного кода. Мы смотрим на дату последнего изменения данного файла, и именно за эту дату стоит открыть файл access_log в удобном текстовом редакторе. Далее воспользуемсся поиском и введем имя нашего вредоносного файла. Находим упоминание в логе и смотрим за происшествиями, которые произошли до запуска исполняемого файла, особенно с того же айпи.

Если хорошо вчитаться в логи, то можно воспроизвести моменты атаки и таким образом найти уязвимый код или действия, повлекшие взлом на сайте. К примеру, часто бывает, что взламывают админку тупым перебором паролей, а всё из-за того, что стоит примитивный пароль «12345».

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

Проникновение вирусов через POST запросы

Наверное главным недостатком логов будет проблемность обнаружить данные, передаваемые через POST. Многие вирусы стали достаточно хитрыми и маскируются под модули и плагины системы управления сайтом. Как результат, в логах обычные обращение к страницам, будь то главная или внутренние ссылки. В таких случаях необходимо устанавливать на сервер дополнительные модули захвата пост-данных, либо переключать логирование в уровни trace. При этом будьте готовы, что файлы логов станут занимать ну очень много места!

Уязвимости сайтов

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

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

Поиск уязвимостей аудитом безопасности

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

Тут два пути поиска потенциальных дыр на сайте. Первый из них анализ файлов и кода, а также компонентов и модулей. В первую очередь стоит проверять проверки загрузки файлов на сайт, а также фильтрацию всех входных данных. Это очень трудоемкое занятие, и явно не подходит рядовому пользователю. Тут могут справиться только настоящие асы.

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

Однако даже все эти методы не дают 100% гарантии отсутствия уязвимостей. И чем больше объем функционала сайта, тем больше потенциальных вариантов уязвимостей. Даже программным методом перебор всех уязвимостей может занять от нескольких суток до месяцев.

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

Классификация уязвимостей и угроз для сайтов.

Что такое уязвимость сайта

В web безопасности, термин уязвимость (англ. vulnerability) используется для обозначения недостатков в коде сайта или программном обеспечении сервера, используя которые, можно нарушить целостность системы и вызвать неправильную работу.
Уязвимость может быть результатом ошибок программирования, недостатков, допущенных при проектировании сайтов, ненадежных паролей, возможности проведения скриптовых и SQL — инъекций, а также атак на сайт.
Обычно уязвимость позволяет атакующему «обмануть» интернет — приложение — заставить его совершить действие, на которое у того не должно быть прав.
Это делается путем внедрения каким-либо образом в программу данных или кода в такие места, что программа воспримет их как «свои».
В большинстве случаев уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем, и позволяют вставить в интерпретируемый код произвольные команды.
Многие уязвимости появляются из-за более сложных проблем, таких как запись данных в буфер без проверки его границ (переполнение буфера).
Одни уязвимости известны только теоретически, но большинство уязвимостей уже активно используются и имеют известные эксплойты.

10 самых популярных веб-уязвимостей по версии OWASP (Open Web Application Security Project ) Top Ten for 2013

  • A1 Injection (Инъекции)
  • A2 Broken Authentication and Session Management(Ошибки, обход аутентификации)
  • A3 Cross-Site Scripting (XSS)(Межсайтовый скриптинг)
  • A4 Insecure Direct Object References (Незащищенные ресурсы и объекты)
  • A5 Security Misconfiguration (Небезопасная конфигурация окружения)
  • A6 Sensitive Data Exposure (Незащищенность критичных данных)
  • A7 Missing Function Level Access Control (Отсутствие функций контроля доступа)
  • A8 Cross-Site Request Forgery (CSRF)(Межсайтовая подделка запроса)
  • A9 Using Components with Known Vulnerabilities (Использование компонентов с известными уязвимостями)
  • A10 Unvalidated Redirects and Forwards (Непроверенные переадресации и пересылки)

OWASP Top Ten — это серьезный документ, осведомляющий о безопасности веб-приложений и представляющий собой единый источник всех наиболее критичных уязвимостей веб-технологий.

Как найти и устранить SQL-уязвимость на сайте

Мы составили свой рейтинг угроз, исходя из статистики обращений в нашу компанию с проблемой взлома сайтов:

  • Инъекции.
  • Инклуды.
  • Некорректная публикация сайта на сервере. Ошибки публикации.
    • Открытые директории с системными файлами.
    • Открытый доступ и возможность выполнения системных файлов, взаимодействующих с файловой системой или базами данных.
    • Системные архивы, бэкапы сайта, находящиеся в открытом доступе.
    • Файлы дампа баз данных в открытом доступе.
    • Открытый доступ к .svn или .git индексным файлам.

  • Клиентские атаки. Атаки на администраторов и посетителей сайта.
    • XSS атака. — Cross Site Sсriрting — межсайтовый скриптинг.
    • CSRF атака. — Сross Site Request Forgery — межсайтовая подделка запроса.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *