SQL инъекция : введение.
Огромное количество веб-ресурсов подвержено атакам именно с помощью SQL инъекции . И администратору сайта в этом случае приходится рассчитывать лишь на себя. Впрочем, не всё и не всегда всё зависит от него. Я знаю немало пользователей сети, которые, не считая себя гуру хакинга, ради забавы сканируют сайты на подобные уязвимости и играют на ошибках интернет-ресурсов. В этой статье мы и рассмотрим вопрос о том, что такое SQL инъекция, и как происходит заражение. Думаю, экскурс о том, что такое SQL инъекция не помешает и начинающим веб мастерам, которые и не подозревают, чем может закончится пренебрежение элементарными средствами защиты родного детища.
Сразу нужно отметить один важный пункт – обе указанные базы данных не имеют SQL основы: база данных хранит информацию, а SQL есть форма языка, который запрашивает эти данные из хранилища.
ПРИМЕР
Представьте себе сайт с форумом. База данных должна и содержит все необходимые для этого проекта строки, столбцы и таблицы. Значит, там обязательно есть таблица под названием user, которая хранит в себе все данные зарегистрированных пользователей. А пара столбцов точно имеют шапкой username (имя пользователя), password (пароль) и email. Характеристики столбцов это типы данных, длина, значения по умолчанию и много чего ещё. Нас пока интересует столбец с именами. Путь там будет какой-нибудь пользователь с именем Ivan.
Представьте, что этот пользователь собирается прочесть некую статью, переходя по ссылке. Нажав на неё, его взору откроется нужная статья, но что происходит перед этим? Приложению на стороне сервера нужно обратиться к базе данных, чтобы та передала данные этой новенькой статейки. Вот как будет выглядеть PHP код в файле viewnews.php:
Это самый простой и работающий из примеров, как приложение использует SQL для получения данных из MySQL базы данных. Здесь
Решаются в основном три задачи в следующей последовательности:
Для этого нужно знать, что представляет из себя код конкретной БД. Но для общего представления могу сказать, что это набор некоторых символов, добавляемых хакером в строки кода базы данных. Вот пример внедрения (или расширения, продолжения кода БД):
спасибо slideshare.net за рисунок
Для того, кому совсем трудно понять, вспомните сказки про Али-Бабу или про Летучий корабль. Главные герои знали заветные слова-пароли, которые заставляли недвижимое двигаться. Сами устройства понимали произнесённый код, о котором другие участники сказок и не догадывались. Также и здесь, готовый код базы данных работает прекрасно, однако вы уверены, что этот код и как он работает, кто-то ещё не знает лучше и больше?
Поисковик Google нам здесь поможет лучше всех. Они, поисковые системы, по умолчанию готовы проиндексировать все закоулки сайта. Задача администратора – скрыть секреты от чужих глаз. Получается не всегда. Только Google на это наплевать. Так и появляются Дорки или Доркс : определённый набор операндов, с помощью которых, прямо из строки поиска можно найти ту уязвимость, в которой вы поднаторели. В их числе “вражеского” сайта может не оказаться, но в списке видимых есть чем хакеру позабавиться. Поисковая выдача таких дорков – и есть потенциальные жертвы SQL – инъекций.
Вот как такие команды выглядят:
inurl:admin.asp inurl:login/admin.asp inurl:admin/login.asp
А теперь пошла и сама SQL инъекция:
‘ or ‘1’=’1
‘ or ‘x’=’x
То есть на странице сайта предпримите попытку ввода пароля:
Username : Admin
Password : ‘or’1’=’1
Вы уже попробовали? Не получится, конечно. Сайты уже к такому давно не уязвимы. Не буду же я прямым текстом со своих страниц учить вас нехорошим делам. Однако в Google этой информации полно, дерзайте. Прочтите ещё раз про дорки и желаю успехов.