0

Как взломать сайт sql

А вы уверены, что ваш сайт находится в безопасности? 45% веб-ресурсов крупнейших российских компаний имеют критические уязвимости. Прочитав эту статью, вы сможете провести базовую проверку своего веб-сайта на наличие SQL инъекций.

Представляю вам краткий математический обзор: исходя из этих базовых понятий считают математические риски (классы гостайны разделены именно по этим принципам).

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

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

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

Теперь, я хочу вам донести информацию об основных уязвимостях веб-сайтов.

Основные методы и взлома сайтов (уязвимости)

  1. SQL – injection;
  2. XSS;
  3. CSRF;
  4. PHP injection.

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

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

SQL Injection

Теперь нам нужно разобраться, что есть сайт, как он работает в общих чертах. Сайт — программа, в 90% случаев написанная на языке программирования PHP.

Для того чтобы веб-мастерам было удобнее управлять сайтом, вначале двухтысячных начали использовать базы данных (далее БД), где хранится вся информация о зарегистрированных пользователя, об их паролях, естественно, не в открытом виде, но об этом ниже. Кстати, даже то, что вы сейчас читаете, хранится в БД.

Что такое SQL инъекции?

Все очень просто. SQL — это язык общения с БД, а слово Injection переводится как “внедрение”. Иначе говоря, при помощи SQL Injection можно внедрить произвольный SQL-код, который сервер обработает и выдаст ответ.

Как все работает: примеры

БД состоит из таблиц, каждая таблица имеет строки и столбцы, все как в Еxel.

Для наглядности рассмотрим примерную структуру БД на всем знакомом сайте VK.com

Каждый пользователь “ВКонтакте”, естественно, имеет ряд персональных параметров: Имя, Фамилия, e-mail, дата регистрации и прочее. В итоге каждый столбец отвечает за свой параметр.

ID | First_name| Last_name | password | email .

1 | Pavel | Durov | 202cb962ac59075b964b07152d234b70 | .

2 | Vova | Pupkin | 827ccb0eea8a706c4c34a16891f84e7b | .

Скорее всего, вы решите, что у Паши Дурова и Вовы Пупкина очень сложный пароль (аж целых 32 символа!), но, на самом деле, вы ошибаетесь. Что же есть 202cb962ac59075b964b07152d234b70? Это так называемое хэш-значение, результат преобразования хэш-функции. Простым языком — зашифрованный пароль (хоть это не совсем так). Для чего это нужно? Для того чтобы хакер при взломе сайта не смог легко заполучить пароли пользователей. Но и на это есть свои методы. Если пароль зашифрован — это еще не гарантия безопасности.

Давайте представим, что вы (программа) вышли в магазин (БД) и просите продавца (SQL запрос): "Дайте, пожалуйста, одну пачку Мальборо за 100 рублей";

Вот так это будет выглядеть на языке SQL:

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

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

Продолжим. Вот вы прочли Аллена Карра и бросили курить. Теперь вы ходите в магазин за исключительно полезными товарами:) В этот раз, вы пойдете. ну, допустим, за молоком.

Чтобы не забыть, вы записали на бумажке: "Один пакет молока за 50 рублей", но у вас есть друг (хакер), который курит. Он произвел SQL-атаку и теперь надпись гласит: "Один пакет молока за 50 рублей. $ИЛИ одну пачку Мальборо за 100 рублей$"

Вы приходите в магазин и читаете по бумажке: "Дайте, пожалуйста, один пакет молока за 50 рублей или пачку Мальборо за 100"

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

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

Как же происходит взлом?

Чтобы четко понимать, что именно нужно делать, программа берет SQL-запрос в кавычки. Приведу реальный пример. Допустим, мы хотим выяснить, сколько лет нашему другу, зная его имя и отправляя в переменную $_GET[‘name’]

Например, мы хотим узнать сколько лет Насте хоть это и неприлично, но БД все нам расскажет 🙂

В программе окажется код:

Рассмотрим чуть детальнее вот этот кусочек. у нас есть 2 пары кавычек.

Читайте также:  Как в excel пронумеровать страницы по порядку

Первая пара обозначает сам запрос целиком.

Вторая пара обозначает имя. Настя.

Так вот, а что если злоумышленник напишет не Настя, а Настя’ , с кавычкой в конце? Он нарушит синтаксис функции mysql_quevery. И SQL-сервер выдаст закономерный ответ — ошибку (потому как не сможет обработать ‘ , которая не является функцией).

Кстати, совсем забыл вам рассказать про оператора для комментирования. Один из них — это два тире, которые выглядят вот так: “–”. Что же случится, если мы передадим Настя’ — ?

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

В языках программирования есть разные типы данных, есть строки (String), есть числа (Integer), в зависимости от этого нужно правильно строить SQL-инъекцию. Кстати, “1” может быть как строкой, так и целым числом.

Это лишь край вершины айсберга, есть десятки способов реализации угроз типа SQL-инъекции.

Пример взлома сайта

Действительно ли все так страшно, как вам рассказывают? Не могу не приложить пример. Здесь мы наблюдаем интернет-магазин, который с помощью SQL уязвимости вывел нам информацию о версии SQL-сервера. Можно с легкостью вывести информацию и о логинах/паролях, но мы рассматриваем не методы взлома и деструктивного воздействия, а напротив, средства защиты (кстати говоря, администрация сайта уведомлена о найденной уязвимости). Иметь уязвимость в интернет-магазине — недопустимо, а если он еще и карты принимает — неприемлемо. Злые хакеры (не мы) могут получить доступ к сайту и записывать данные о дебетовых/кредитных картах покупателей, а затем использовать информацию в своих целях. Поэтому стоит очень внимательно относиться к безопасности как при создании веб-сайта, так и при покупках в сети.

Это лишь один из путей хакеров при монетизации сайтов. Их десятки: вирусы, дорвеи, редиректы, дополнительная реклама, невидимая sape на вашем сайте… и многое другое… Если вам это будет интересно, я с радостью напишу подробную статью на этот счет, пишите в комментарии.

Мы с вами пришли к выводу, что имея более-менее значимый проект, нельзя допускать уязвимость. Иначе в самый неподходящий момент это может привести к тяжелым последствиям. Хорошо, с этим разобрались, а что же делать? Для профессионального аудита стоит обратиться к профильным компаниям, но проверить элементарные SQL-уязвимости теперь вы можете и самостоятельно. Зачастую хакеры проверяют уязвимости автоматически, и, закрыв базовые уязвимости, вы сможете спасти свой сайт от взора хакера.

Что делать если мой сайт взломали?

Взломав сайт и используя информацию в своих целях, хакеры оставляют backdoors (скрытые точки входа хакера). Это могут быть файлы с любым расширением, даже jpg, но в них будет закодирован php-код для проникновения в систему. В наше время существует множество php-антивирусов, программ, которые сканируют вашу файловую систему сайта на предмет подозрительных файлов. Могу посоветовать бесплатное ПО AI-Bolit.

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

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

Для начала, нам нужно найти ссылки такого типа…..

Т.е. любой URL, который содержит входные параметры. Здесь переменная $_GET[‘ID’] содержит значение 140, которое, возможно, передается серверу БД. Т.е. для базовой проверки вам нужно будет попробовать вставить кавычку и посмотреть, что выдаст в ответ ваш сайт.

Защита от SQL инъекций

Самое главное — фильтрация входящих данных, например, в параметрах поиска, при выборе номера страницы и прочее.

Выделим основные пункты для защиты вашего веб-сайта.

  • Максимально возможная фильтрация данных: злоумышленник не должен иметь прав вставить свою кавычку, затереть вашу.
  • Использовать при сравнении кавычки SELECT . WHERE name=’$name’.
  • Если вы пользуетесь SQL-функцией LIKE, обязательно фильтруйте символы “%” и “_”.
  • Если же вам требуется очень серьезная защита, можете создать белый список* вызова запросов, и сайт будет отвечать только на них.

*White list — лучший метод защиты от SQL-инъекций. Суть заключается в том, что в коде программы прописываются разрешенные для передачи SQL-серверу значения параметров, что практически полностью исключает возможность взлома веб-сайта с помощью SQL-инъекций.

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

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

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

Специалисты студии SEMANTICA проведут комплексный анализ сайта по следующему плану:

– Технический аудит.
– Оптимизация.
– Коммерческие факторы.
– Внешние факторы.

Мы не просто говорим, в чем проблемы. Мы помогаем их решить

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

Но тем не менее, проблема сегодня действительно актуальна.

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

В Интернете 90% сайтов используют базы данных. Базы данных помогают структурировать информацию, которая хранится на сайте. В ней хранятся имена, пароли, адреса электронной почты, переписки, информация о клиентах сайта. Гарантировать 100%-ную безопасность такой системы нельзя, никто не застрахован от хакерских атак.

Читайте также:  Диагностика двигателя через смартфон

SQL-инъекции – способ взломать сайт, а точнее его базу данных.

Что такое SQL?

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

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

Авторизация на сайте – это способ передать информацию в базу данных. Еще один способ – с помощью адресной строки, в которую вы пишите адрес сайта, на который переходите. Например, введите в поиске Яндекса фразу «SQL-инъекция» и в адресной строке увидите следующую строчку: «https://yandex.ua/search/?text=sql%20%инъекция &lr=142». Эта строчка передалась на сервер Яндекса. Как вы видите, в ней содержится информация поиска, а конкретно – «text=sql%20%инъекция &lr=142». Так вот, редактируя адресную строку вручную, вы можете отправлять на сайт информацию. В том числе и запросы SQL.

Что такое SOL-инъекция?

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

Пример из жизни. Папа оставил на столе записку маме «Дай Ване 10 рублей», но написал записку корявым почерком. Хитрый сынок Ваня пришел раньше, чем мама и дописал еще один ноль. Получилось письмо следующего содержания: «Дай Ване 100 рублей».

Так вот записка из примера – это SQL-запрос, который папа отправил маме, а хитрый сынок – хакер, который умеет менять запросы, потому что знает, как они работают.

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

Как работают SQL-инъекции

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

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

Например, вы можете читать страницы, доступные только для владельцев сайта, перезаписывать данные, удалять их и редактировать. А вот к каким данным можно получить доступ с помощью SQL-инъекций:

  • Логины и пароли
  • Информация о клиентах
  • Товары интернет магазинов
  • Заказы на сайтах
  • Переписки
  • Скрытые страницы сайта
  • Защита от SQL-инъекций

Архимед говорил: «На каждое действие найдется противодействие». Бороться с такими атаками можно. Первый способ борьбы с ними заключается в фильтрации данных, которые отправляются на сайт.

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

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

Также используются алгоритмы подсчета ключевых слов. Ключевые слова – команды, которые понимает база данных. Так вот если перед тем как пользователь отправил данные таких слов было 3, а после того как данные пришли, их стало 5, то это SQL-инъекция, и выполнять ее не следует.

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

Как я лечил сайты клиента

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

Так вот, ко мне обратился некто Сергей, попросил 3 сайта подлечить. Я, конечно, взялся.

Но то что я увидел потом — меня просто поразило. Я до сих пор в шоке и не могу отойти.

Вот результаты сканирования и лечения первого сайта:

Я просто в шоке был, когда увидел такие цифры.

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

В этом случае так и произошло, после «лечения» скриптами — сайт не запускался. Просто потому что были заражены ВСЕ js-скрипты.

Вот результат сканирования и лечения второго сайта:

Я уже даже порадовался за то что количество вирусни в два раза меньше.

Но тем не менее, результат тот же.

Печалит меня это не по детски.

Вот и как мне работать в таких условиях? Скажите мне на милость?

Читайте также:  Блэк десерт майл ру

Моё предложение читателю

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

Тем более я поражаюсь блоггерам, которые должны лелеять свой блог, но не делают этого.

Согласитесь, что блог — это ваш актив, которые должен приносить плоды. Зачем же его губить так?

[tip]Я помню, еще подумал:
«Вот был бы список правил, которые надо выполнять чтобы не заражаться вирусами, некий чек лист бы достать где-нибудь».[/tip]

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

Нашел я его у многим известного блоггера — Александра Борисова.

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

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

И это не пустые слова.

А те сайты, с которыми я столкнулся и примеры которых привел — меня только в этом убедили.

Не, ну серьезно, а чего вы ждете?

Тоже ждете пока ваш блог посетит такое количество вирусов?

Я за всю жизнь не видел такого количества вирусов. Тем более в одном месте!

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

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

На сегодня у меня всё, пока!

SQL-инъекции: как взломать сайт и как от этого защититься? : 11 комментариев

Вот об этом способе взлома я не знал. Но у меня нет регистрации пользователей на блоге, наверное и нет этой лазейки. Есть правда данные комментаторов, оставленные в подписи.
Защита от DDOS атак установлена хостингом, хорошая штука, роботы ее не проходят. Хороший плагин защиты тоже установлен.
Когда был сайт партнерского ИМ, на нем кстати тоже не было регистрации, там данные вводились только при оформлении заказа. Проверял его программой Айболита — проблем не обнаружено.

Денис,спасибо за очень интересную статью (почитал и твои мысли, и статью Александра Борисова). Грустно все это! Проверил свой сайт на вирусы — тьфу,тьфу,пока нет… Но видимо действительно надо переходить на выделенный IP да и другие способы защиты внедрять на практике. В общем, буду изучать курс, пока не поздно…

Для проверки у меня есть сканер, периодически проверяю. Браузер тоже проверяет на вирусы, хостинг проверяет. Заглядываю на Сеобилдинг (сейчас название изменилось), там комплексная проверка большинства параметров, в том числе и на вирусы. Но это все только проверки. А 100% защиты к сожалению не бывает.

Хочу присоединиться к Александру Викторовичу — 100% защиты не бывает. Вчера взломали сайт клиента, хостинг заметил большие рассылки, хочу отметить, что техническая поддержка правильно среагировала и быстро, вылечила айболитом. А то бы пришлось к Денису обращаться.

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

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

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

Кому-то нравится создавать сайты, а у некоторых хобби с детства — что-нибудь сломать, испортить, навредить… И таких людей, к сожалению , немало. Поэтому и надо изучить курс А. Борисова, в нем, кстати, есть немало полезных вещей. Я например, уже приступил, и очень рад этому…

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

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

Как взломать сайт при помощи SQL инъекции? Да очень просто! Самое главное, что бы web-сайт выдавал ошибку или «криво» выводил некие данные, благодаря запросам из Базы Данных! Всё, с чего начинается взлом сайта или проверка на уязвимость это банальная одинарная кавычка. Собственно говоря, вот живой пример взломанной Базы Данных phpMyAdmin (SQL) учёных занимающихся клонированием ДНК цветов (уже 😉 без пароля) — аналогичная База Данных может выдать ошибку, через которую пользователь получит код или кусок кода. Смотрим видео взлома сайта!

3 thoughts on “ Как взломать сайт при помощи SQL инъекции? ”

Хороший сайт. Автор все таки смог донести свои слова до читателей.

Парни, а вто ещё на этом сайте нашол пример влома Базы Данных, с расшифровкой пароля md5: http://www.helpset.ru/?p=3640
клёво ❗

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

admin

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

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