Делаем компьютер неуязвимым. Всегда свежие драйверы. Как вычислить уязвимость, позволяющую внедрять SQL инъекции

Host-tracker.com — позволяет поверить уязвимость сервера. Администратор сайта, используя этот сервис, легко узнает, защищено ли его подсоединение к удаленному серверу от уязвимости POODLE .

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

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

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

Таким образом администратор сайта, используя хостинги, должен знать, а защищено ли его подсоединение к удаленному серверу? Используется ли этот «дырявый» протокол на нем?

Я задался вопросом, а защищен ли мой сервер от этой уязвимости под названием POODLE и нашел такой сайт.

Сервис host-tracker: проверьте, включен ли ssl 3.0 на вашем сервере

Справедливости ради скажу, что данный сервис полезен не только для проверки уязвимости по указанному протоколу, на нем есть возможность проверки и других нужных параметров: он автоматически определяет IP-адрес пользователя интернетом (т.е. ваш) и позволяет проверить некоторые данные по вебсайтам.

Я не стану объяснять суть каждого параметра — понять не сложно, но для тех, кто желает уточнить — наведите курсор на любую из кнопок — http, рing и т.д. Эти полезные полезные данные на host-tracker вы получаете бесплатно.

Но на этой странице мы поговорим немного о том, чему, собственно, посвящена статья — проблеме уязвимости браузера пользователя по IP-соединению. Как я уже говорил, можно проверить личный IP — вашего провайдера, проверки можно производить для сайтов (используется его IP). Причем любого. Для этого используем крайнюю правую кнопку SSLv3 .

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

Как видите, в моих случаях сервису почему-то не удалось проверить уязвимость POODLE и я не смог узнать, пользуются мои серверы старой версией протокола шифрования — SSL 3.0. Жаль.

Но потом (любопытства ради), решил проверить некоторые сайты нескольких моих комментаторов. Тут тоже были разные ответы:

  1. «Рукопожатие не удалось из-за неожиданной пакетном формате .» (курсив — это результат перевода фразы, которая почему-то выдается на английском).
  2. «Не удалось выявить уязвимость POODLE. При попытке подключения через SSL 3.0, возникла следующая ошибка: В соединеии отказано
  3. «Не удалось выявить уязвимость POODLE. При попытке подключения через SSL 3.0, возникла следующая ошибка : Превышен интервал ожидания
  4. SSL 3.0 выключен на этом сервере .

Как видите, не все серверы предоставляют возможность узнать, пользуются они старой версией протокола SSL 3.0. А некоторые сообщают и им повезло.

Таким образом, используя сервис host-tracker, друзья, если у вас есть сайты, вы сможете узнать насколько надежен ваш хостинг в плане безопасности от происков взломщиков и мошенников.

(Visited 125 times, 1 visits today)

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

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

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

  • Разведка - поиск и сборка информации о вашей сети или серверах;
  • Сканирование - на этом этапе нужно проверить сайт на уязвимости опираясь на собранную информацию;
  • Эксплуатация - этот шаг необязательный и не всегда нужный тестировщикам на проникновение. Это необходимо, если вам нужно показать реальную опасность уязвимостей;
  • Исправление - на этом этапе нужно исправить все найденные уязвимости на вашем сайте.

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

Разведка

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

nmap - это один из самых популярных инструментов для сканирования сетей. С помощью него вы можете посмотреть какие сервисы запущены на сервере веб-сайта, какие порты они используют их версии, и даже версию операционной системы. Чтобы посмотреть открытые порты на своей машине выполните такую команду в терминале Kali Linux:

nmap -sS 192.168.91.249

Здесь 192.168.91.249 - это ip адрес вашего сайта. Это команда только выведет открытые порты и названия сервисов. Вы можете получить более подробную информацию, например, уже на этом этапе можно собрать много информации о системе. Например, здесь вы можете видеть, что на машине запущен SSH сервер, веб-сервер, службы обмена файлами Samba и прокси сервер на порту 3128. Все они могут быть потенциально уязвимы.

Сканер Nmap позволяет копнуть глубже, с помощью более интенсивного сканирования. Для этого используйте опцию -A:

nmap -A 192.168.91.62

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

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

  • whois - с помощью этого сервиса вы можете узнать общедоступную информацию о домене, регистратора, владельца и другую контактную информацию;
  • recon-ng - полезный инструмент для анализа, который поставляется вместе с Kali Linux;
  • Maltego Chlorine - это очень популярный инструмент с открытым исходным кодом, предназначенный для сбора информации с открытых источников;
  • Netcraft - полезный инструмент, позволяющий найти поддомены сайта;
  • hackertarget.com/reverse-ip-lookup - позволяет узнать какие еще сайты работают на вашем ip адресе.

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

Сканирование

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

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

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

WPScan - это проект с открытым исходным кодом, написанный на Ruby специально для сканирования WordPress. Он очень прост в использовании и может быть полезным для сайтов, которые используют большое количество плагинов или не обновляются. Утилите не нужен исходный код, она выполняет сканирование удаленно.

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

Burp Suite - это очень мощная программа для поиска уязвимостей на сайте или в веб приложениях. Этот инструмент работает только через веб-браузер. Утилита позволяет проверить все формы, которые есть на сайте, проверить отправку разных заголовков, посмотреть ответы и запросы браузера, выполнить активное сканирование URL, выполнить статический анализ кода JavaScript, а также выполнить поиск XSS уязвимостей на сайте. Это отличный инструмент, но он может показаться сложным.

https://youtu.be/M_h_absC5yE

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

sqlmap -u http://example.com/?id=1 -p id

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

sqlmap --dbms=MySQL -u http://example.com/?id=1 -p id

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

Эксплуатация

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

  • SQLMap - очень эффективный инструмент для поиска sql уязвимостей и их эксплуатации;
  • Burp Suite - инструмент для поиска XSS уязвимостей и эксплуатации;
  • Metasploit - эксплуатация уязвимостей в системе.

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

Исправление

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

Выводы

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

У нас очень часто надеются на “авось” и начинают бороться с последствиями, когда уже всё случилось. Особенно это касается информационной безопасности. Но зачем ждать, когда ваш компьютер взломают или заразят вирусом, если можно заранее решить все возможные проблемы. Мы в Qihoo 360 Technology Co много знаем про профилактику заражений и взломов и предлагаем вам воспользоваться нашим чек-листом, с помощью которого вы сами сможете проверить ваш компьютер.

Антивирусная проверка

Самое простое и самое первое средство проверки вашего компьютера на уязвимости - это его регулярное сканирование на предмет обнаружения вирусов и вредоносных программ. Современные антивирусы научились достаточно точно выявлять любые зловреды ещё на этапе их попыток внедрения в систему, но, однако, человеческий фактор ещё никто не отменял. По статистике большинство заражений компьютеров вирусами происходят именно по вине самих пользователей. Любой может случайно нажать “пропустить” на предупреждение антивируса и вот уже система заражена.

Так что лучше всего поставить в расписание антивируса регулярную полную проверку. И не забыть при этом все носители, которые вы используете, так как на них могут храниться копии вирусов. Если же вы опасаетесь, что система уже заражена, то мы бы рекомендовали провериться несколькими разными антивирусами. Или одним 360 Total Security, в состав которого входят такие известные антивирусные движки, как Avira, Bitdefender, облачный сканер 360 Cloud и QVM AI. В совокупности они справятся с самым хитрым заражением.

Оптимизация системы

Конечно, проверка уязвимостей не может ограничиваться одними лишь антивирусами. Существует множество программ, которые не определяются как вредоносные. Это так называемое рекламное ПО, надоедливые панели инструментов в браузере и hijacker-утилиты, которые меняют стартовые страницы, потенциально нежелательные программы (PUP) и так далее. Эти программы маскируются и даже выполняют некоторые полезные функции, но при этом позволяют себе загружать вашу систему в плане использования оперативной памяти и процессора, и ваш мозг в плане показа совершенно ненужной рекламы.

Подобный софт нужно удалять из установленных программ и, конечно, тщательно изучать запланированные задачи, автозагрузку и сервисы. Именно там они очень часто прячутся от обычных методов удаления. Если не проверить, то есть большой шанс, что через некоторое время эти программы вернутся в строй и продолжат своё чёрное дело. Антивирус 360 Total Security умеет автоматически определять и удалять подобный вредоносный софт и, вдобавок, отключать некоторые запланированные задания, ненужные службы, а также оптимизировать сетевое соединение. Причём антивирус даёт пользователю возможность самостоятельно выбрать исключения для оптимизации - таким образом, можно оставить в нетронутом виде те программы и утилиты, автозапуск которых по тем или иным причинам критичен.

Обновления ОС и программ

Разберёмся в самом понятии «уязвимость». В компьютерной безопасности оно используется для обозначения недостатка в ОС или программе, используя которую злоумышленник может нарушить работу системы или даже получить над нею контроль. Уязвимости возникают чаще всего из-за ошибок в программировании и лечатся патчами, которые выпускают разработчики.

Казалось бы, как может повлиять скрытая ошибка на её безопасность программного обеспечения. Так и думает обычный пользователь, запрещая операционной системе и программам автоматическое обновление. Однако, такая известная уязвимость, как переполнения буфера вполне может позволит злоумышленнику загрузить и выполнить произвольный машинный код от имени программы и с правами учетной записи, от которой она выполняется. А утечки памяти могут и без каких либо действий со стороны нарушить работу всей системы. Внедрение SQL-кода может дать возможность атакующему выполнить произвольный запрос к базе данных программы или сайта и получить возможность чтения или записи локальных файлов. И, конечно, как тут не упомянуть CSRF - «Межсайтовую подделку запроса». Этот вид атак применяется к посетителям сайтов и осуществляется путем размещения на веб-странице ссылки или скрипта, который может имитировать нормальную работу. Таким образом воруются пароли, личные данные и даже ваши деньги с банковских карт.

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

Уязвимости операционных систем представляют большую опасность, чем уязвимости отдельных программ, так как они гораздо сложнее и используются повсеместно. Закрываются они своевременной установкой обновлений безопасности, которые исправляют ошибки в уязвимых компонентах системы. В ОС Windows за это отвечает специальная служба “Центр обновления Windows”, которая в автоматическом режиме проверяет наличие новых обновлений устанавливает их, если, конечно, это не запрещено пользователем.

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

В 360 Total Security мы встроили специальный механизм, которая проверяет операционную систему и установленные программы на апдейты. Этот сервис мониторит исполняемые файлы и саму ОС, сравнивает со специально базой и выдаёт рекомендации по обновлению.

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

Очистка системы и браузеров

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

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

Все эти возможности входят в модуль “Очистка” в 360 Total Security. Он удаляет различный мусор вроде временных файлов, кэш-файлов браузеров, системного мусора и т.д… К тому же с помощью System Backup Cleaner можно очистить резервные копии драйверов и временные файлы обновлений. И вам не нужно устанавливать дополнительный софт. В процессе работы с антивирусом пользователь может проставить или снять хинты напротив временных файлов, которые следует или не стоит удалять (например, если вы не хотите чистить кэш браузера или опасаетесь удалять временные файлы Windows).

Защита в реальном времени

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

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

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

Запуск подозрительных программ в «песочнице»

Продолжая тему возможностей вашего антивируса, необходимо отдельно рассказать о такой возможности, как “песочница”. С помощью этой функции вы можете запустить потенциально опасные программы на вашем компьютере и не бояться, что это как-то повлияет на вашу систему. Ведь она запустится она в ограниченной среде, без доступа к сети и возможностью сообщаться с ОС. Если программа начнёт устанавливать вредоносное ПО или заменять системные файлы, то сработают защитные механизмы антивируса. Но так как вы запустили её в “песочнице”, то никаких последствий не будет. Если же программа безопасна, то её можно устанавливать в систему и работать.

Обязательно проверьте свой антивирус на все эти возможности. В 360 Total Security она есть.

Must read&save чек-лист для обязательной проверки уязвимостей

Антивирусная проверка - регулярная полная проверка по расписанию, контроль внешних устройств (флешки, карты памяти, внешние диски, гаджеты)

Обновления операционной системы и программ - обязательно проверять наличие и состав обновлений, накатывать полезные патчи

Очистка системы и браузеров - периодически чистить ненужные и неактуальные временные файлы, cookies, историю посещений и сохранённые пароли

Защита в реальном времени - защитить веб-камеру от несанкционированного доступа, отключить кейлогеры, проверять файлы при загрузке

Запуск подозрительных программ в «песочнице» - если нужная программа вызывает подозрение, запускать её в песочнице и устанавливать в систему только в случае её полной безопасности

Заключение

Как правило, большинство из того, что описано выше, выполняется разными программами. Клинеры очищают систему от мусора, антивирусы - от вредоносных программ. И если первые в большинстве своём бесплатны (и иногда несут на борту то самое рекламное ПО), то вторые вам придётся покупать, чтобы пользоваться всеми нужными функциями. Однако, наш

SQL инъекция - это один из самых доступных способов взлома сайта.
Суть таких инъекций – внедрение в данные (передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода. Если сайт уязвим и выполняет такие инъекции, то по сути есть возможность творить с БД (чаще всего это MySQL) что угодно.

Как вычислить уязвимость, позволяющую внедрять SQL инъекции?

Довольно легко. Например, есть тестовый сайт test.ru . На сайте выводится список новостей, с возможностью детального просомтра. Адрес страницы с детальным описанием новости выглядит так: test.ru/?detail=1 . Т.е через GET запрос переменная detail передаёт значение 1 (которое является идентификатором записи в табице новостей).

Изменяем GET запрос на?detail=1" или?detail=1" . Далее пробуем передавать эти запросы серверу, т.е заходим на test.ru/?detail=1 " или на test.ru/?detail=1 ".

Если при заходе на данные страницы появляется ошибка, значит сайт уязвим на SQL инъекции.

Пример ошибки, возникающей при проверке уязвимости

Возможные SQL инъекции (SQL внедрения)
1) Наиболее простые - сворачивание условия WHERE к истиностному результату при любых значениях параметров.
2) Присоединение к запросу результатов другого запроса. Делается это через оператор UNION.
3) Закомментирование части запроса.

Практика. Варианты взлома сайта с уязвимостью на SQL внедрения

Итак, у нас есть уже упоминавшийся сайт test.ru . В базе хранится 4 новости, 3 из которых выводятся. Разрешение на публикацию новости зависит от парметра public (если параметр содержит значение 1, то новость публикуется).

Список новостей, разрешённых к публикации

При обращении к странице test.ru/?detail=4 , которая должна выводить четвёртую новость появляется ошибка – новость не найдена.
В нашем случае новость существует, но она запрещена к публикации.

Но так как мы уже проверяли сайт на уязвимость и он выдавал ошибку БД, то пробуем перебирать возможные варианты запросов.
В адресной строке плюс (+) выполняет роль пробела, так что не пугайтесь

Тестирую следующие варианты:
test.ru/?detail=4+OR+1
test.ru/?detail=4+--
test.ru/?detail=4+UNION+SELECT+ *+FROM+news+WHERE+id=4

В итоге удача улыбнулась и два запроса (первый и третий) вернули нам детальное описание четвёртой новости

Разбор примера изнутри

За получение детального описания новости отвечает блок кода:
$detail_id=$_GET["detail"];
$zapros="SELECT * FROM `$table_news` WHERE `public`="1" AND `id`=$detail_id ORDER BY `position` DESC";

Мало того, что $detail_id получает значение без какой либо обработки, так ещё и конструкция `id`=$detail_id написана криво, лучше придерживаться `id`="$detail_id" (т.е сравниваемое значение писать в прямых апострофах).

Глядя на запрос, получаемый при обращении к странице через test.ru/?detail=4+OR+1

SELECT * FROM `news` WHERE `public`="1" AND `id`=4 OR 1 ORDER BY `position` DESC

Становится не совсем ясно, почему отобразилась 4-ая новость. Дело в том, что запрос вернул все записи из таблицы новостей, отсортированные в порядке убывания сверху. И таким образом наша 4-ая новость оказалась самой первой, она же и вывелась как детальная. Т.е просто совпадение.

Разбираем запрос, сформированный при обращении через test.ru/?detail=4+UNION+SELECT+*+FROM+news+WHERE+id=4 .

Тут название таблицы с новостями (в нашем случае это news) бралось логическим перебором.
Итак, выполнился запрос SELECT * FROM `news` WHERE `public`="1" AND `id`=4 UNION SELECT * FROM news WHERE id=4 ORDER BY `position` DESC . К нулевому результату первой части запроса (до UNION) присоединился результат второй части (после UNION), вернувшей детальное описание 4-ой новости.

Защита от SQL инъекций (SQL внедрений)

Защита от взлома сводится к базовому правилу «доверяй, но проверяй». Проверять нужно всё – числа, строки, даты, данные в специальных форматах.
Числа
Для проверки переменной на числовое значение используется функция is_numeric(n);, которая вернёт true, если параметр n - число, и false в противном случае.
Так же можно не проверять значение на число, а вручную переопределить тип. Вот пример, переопределяющий значение $id, полученное от $_GET["id_news"] в значение целочисленного типа (в целое число):
$id=(int)$_GET["id_news"];
Строки
Большинство взломов через SQL происходят по причине нахождения в строках «необезвреженных» кавычек, апострофов и других специальных символов. Для такого обезвреживания нужно использовать функцию addslashes($str);, которая возвращает строку $str с добавленным обратным слешем (\) перед каждым специальным символом. Данный процесс называется экранизацией.

$a="пример текста с апострофом " ";
echo addslashes($a); //будет выведено: пример текста с апострофом \"

Кроме этого существуют две функции, созданные именно для экранизации строк, используемых в SQL выражениях.
Это mysql_escape_string($str); и mysql_real_escape_string($str);.

Первая не учитывает кодировку соединения с БД и может быть обойдена, а вот вторая её учитывает и абсолютно безопасна. mysql_real_escape_string($str); возвращает строку $str с добавленным обратным слешем к следующим символам: \x00, \n, \r, \, ", " и \x1a .

Магические кавычки

Магические кавычки – эффект автоматической замены кавычки на обратный слэш (\) и кавычку при операциях ввода/вывода. В некоторых конфигурациях PHP этот параметр включён, а в некоторых нет. Для того, что бы избежать двойного экранизирования символов и заэкранизировать данные по-нормальному через mysql_real_escape_string($str);, необходимо убрать автоматические проставленные обратные слеши (если магические кавычки включены).

Проверка включённости магических кавычек для данных получаемых из GET, POST или Куков организуется через функцию get_magic_quotes_gpc(); (возвращает 1 – если магические кавычки включены, 0 – если отключены).

Если магические кавычки вкючены (т.е обратные слеши добавляеются) и такое встречается чаще, то их нужно убрать. Это делается через функцию stripslashes($str); (возвращает строку $str без обратных слешей у кавычек и прямых апострофов).

В закючении привожу код с полной экранизацией строк для записи в БД

If(get_magic_quotes_gpc()==1)
{
$element_title=stripslashes(trim($_POST["element_title"]));
$element_text=stripslashes(trim($_POST["element_text"]));
$element_date=stripslashes(trim($_POST["element_date"]));
}
else
{
$element_title=trim($_POST["element_title"]);
$element_text=trim($_POST["element_text"]);
$element_date=trim($_POST["element_date"]);
}

$element_title=mysql_real_escape_string($element_title);
$element_text=mysql_real_escape_string($element_text);
$element_date=mysql_real_escape_string($element_date);

Статья была подготовлена на основе практических навыков по защите веб-систем. Теория дело хорошее, но практика важнее и главное она работает.

Проблема безопасности вебсайтов ещё никогда не стояла так остро, как в 21 веке. Конечно, это связано со всеобъемлющим распространением сети Интернет практически во всех отраслях и сферах. Каждый день хакеры и специалисты по по нескольку новых уязвимостей сайтов. Многие из них тут же закрываются владельцами и разработчиками, а какие-то остаются как есть. Чем и пользуются злоумышленники. А ведь с помощью взломанного сайта можно нанести большой вред как его пользователям, так и серверам, на которых он размещён.

Типы уязвимостей сайтов

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

  • 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С-Битрикс". Простой и понятный интерфейс.

Алгоритм проведения проверки на уязвимости

Любой специалист по сетевой безопасности выполняет проверку по простому алгоритму:

  1. Сначала он вручную или с помощью автоматизированных инструментов анализирует, имеются ли на сайте уязвимости. Если да, то он определяет их тип.
  2. В зависимости от разновидности присутствующей уязвимости выстраивает дальнейшие ходы. Например, если известна CMS, то подбирается соответствующий метод атаки. Если же это SQL-инъекция, то подбираются запросы в базу данных.
  3. Главной задачей является получение привилегированного доступа к административной панели. Если же такового добиться не удалось, может стоит попробовать формы и подделку адреса с внедрением в него скрипта с последующей передачей жертве.
  4. Если какая-либо атака или проникновение удалось, то начинается сбор данных: имеются ли ещё уязвимости, какие недочёты присутствуют.
  5. На основе полученных данных специалист по безопасности сообщает владельцу сайта о существующих проблемах и способах их устранения.
  6. Уязвимости устраняются его руками или с привлечением сторонних мастеров.

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

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

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

Если сайт строится на основе какой-либо CMS, нужно как можно чаще обновлять её и применять только проверенные плагины, шаблоны и модули. Не стоит перегружать сайт ненужными компонентами.

Чаще проверять журналы сервера на наличие подозрительных вхождений или действий.

Проверить собственный сайт несколькими сканерами и сервисами.

Правильная настройка сервера — залог его стабильной и безопасной работы.

По возможности нужно использовать сертификат SSL. Это позволит избежать перехвата личных и конфиденциальных данных между сервером и пользователем.

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

Заключение

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