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

Для начала определимся с тем, что данной статьей я ни в коем случае не призываю кого-либо взламывать чьи-либо интернет-ресурсы, используя описанные ниже методы.
Основная цель статьи – продемонстрировать пользователю важность темы защиты данных в Интернете на примере сайта, не защищенного должным образом…Для начала определимся с тем, что данной статьей я ни в коем случае не призываю кого-либо взламывать чьи-либо интернет-ресурсы, используя описанные ниже методы.
Основная цель статьи – продемонстрировать пользователю важность темы защиты данных в Интернете на примере сайта, не защищенного должным образом. В качестве способа атаки на сайт будет использоваться, пожалуй, самый распространенный метод взлома сайта – SQL-инъекция.
Для начала определимся с тем, что все без исключения современные объемные, сложные сайты строятся на основе базы данных. Работа с данными, хранящимися в базе данных вашего сайта, осуществляется посредством структурного языка запросов SQL.
SQL-инъекция – техника внедрения в исходный SQL-запрос определенного кода (не нарушающего структуры самого запроса) с целью получения доступа к данным, содержащимся в БД.
Таким образом при определенных условиях, связанных, как правило, с отсутствием в коде и запросах сайта функций, направленных на защиту данных, взломщик может посредством SQL-инъекции прочитать содержимое любых таблиц, а также удалить, изменить или добавить данные, получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере. Не будем долго останавливать на теории и перейдем к действиям.
Итак, для начала познакомимся с таким понятием, как передача данных методом GET. Не замечали ли вы, путешествуя по страничкам бесконечного Интернета, что ссылки, по которым вы путешествуете, зачастую имеют вид типа:
www.хххххх.ru/index.php?что-то = чему-то&еще_что-то = еще_чему-то,
где на месте моих условных «что-то» и «чему-то» стоят всевозможные значения.
Так вот, знайте, что url, выглядящие подобным образом, содержат в себе определенную информацию, а именно: за знаком вопроса следует сначала переменная (ее имя), а затем = ее значение. Знак & отделяет переменные друг от друга.
А делается это все лишь для того, чтобы страница, к которой вы обращаетесь, могла изменяться в зависимости от этих переменных, то есть их значения передаются тем самым методом GET в код страниц сайта, там эти значения обрабатываются, а на основе полученных результатов и получается наша веб-страница.
Но только вдумайтесь! Ведь никто не может вам запретить взять и вручную подправить этот url, сделать его таким, как нужно вам, нажать после этого клавишу enter и отправить данные этого url-а на обработку серверу БД!! Именно здесь и возникает возможность внедрения SQL-инъекции.
Итак, начнем. Мы имеем сайт, который на основании параметра id, переданного методом GET, вынимает определенные данные из БД и формирует на их основе нашу страницу. Вот код этого SQL-запроса, который обрабатывает наши данные из url-а:
$result3 = mysql_query(‘SELECT * FROM raspisanie WHERE cat=$id’).
Если перевести на русский язык, запрос выполняет выборку всех данных из базы данных raspisanie, где поле cat=$id. По сути все, что в запросе идет за нашей переменной $id, которую мы передаем из url-а, нам уже не важно, и позже я поясню почему. Теперь разберемся с самим url-ом. Пусть изначально он выглядит так:
www.хххххх.ru/index.php?id=3.
То есть мы передаем этим url-запросом параметр id=3, и страница формируется на основе этого параметра, значит он помещается в наш SQL-запрос и получается, что из базы данных извлекаются все данные из таблицы raspisanie, где поле cat=$id=3. А теперь перейдем к самому интересному. Допустим, мы знаем, что в базе данных атакуемого сайта в таблице users хранятся логин и пароль от администраторской зоны сайта – в полях login и password соответственно. И тогда, просто изменив наш url следующим образом:
www.хххххх.ru/index.php?id =3+union+select+1,2,login,password,5,6,7 +from+user/*
– страница поместит всю эту большую переменную в наш запрос, который станет выглядеть как
$result3 = mysql_query(‘SELECT * FROM raspisanie WHERE cat=3 union select 1,2,login,password,5,6,7 from user/*’).
И, обработав такой новый запрос, который никак не нарушает структуру таблиц БД, сервер сам вернет нам, помимо обычной информации, соответствующей значению id=3, еще и логин с паролем от сайта!
Чтобы было совсем понятно, я переведу наш новый «волшебный запрос»:
«Выбрать все данные из таблицы raspisaniе, где поле cat=3, а также сделать другой запрос: вывести, помимо полученных данных, значения логина и пароля из таблицы users».
Числа 1, 2 и т.д. являются произвольными и используются для сохранения структуры запроса, и число таких значений определяется подбором — до тех пор, пока число таких значений не станет равным числу значений, которые выводятся из базы данных по умолчанию.
Имена таблицы users и значения полей для логина и пароля также определяются подбором, ведь согласитесь, везде они имеют примерно одинаковые названия. И, наконец, символы в конце нашего url-а «/*» служат для отбрасывания хвоста начального запроса в случае его присутствия, чтобы он не нарушил структуру запроса внедренного.
Итак, мы наглядно, на примере успешного внедрения SQL-инъекции, ознакомились с одним из возможных способов взлома сайта.
Не пренебрегайте вопросами защиты информации своего сайта и спите спокойно!

Related Post

Камбоджа и Таиланд усиливают войсковые группировки на границеКамбоджа и Таиланд усиливают войсковые группировки на границе

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

Экономика отверточного автомобилестроения в РоссииЭкономика отверточного автомобилестроения в России

Хочу поделиться мыслями, возникшими в результате изучения некоторых материалов, касающихся производства иномарок в России. Запаситесь здравым смыслом, калькулятором и знаниями математики в объеме 5 класса средней школы.Купил у меня недавно

Три пассажира одного авиарейса стали владельцами автомобилейТри пассажира одного авиарейса стали владельцами автомобилей

Сразу три пассажира одного из рейсов авиакомпании Ryanair выиграли за время полета автомобиль. Это произошло на рейсе Милан — Мадрид 20 апреля. Пассажиры купили на борту скретч-карты моментальной лотереи, и