Приветствую тебя, уважаемый читатель. Это моя первая статья, и в ней мы поговорим об SQL-инъекциях. Для начала скажу, что для понимания данной статьи знания языка SQL не потребуются - достаточно лишь терпения и внимания.
Но я считаю, что одного прочтения статьи будет мало, так как нам нужны живые примеры.
Внимание! Статья написана в информативных и ознакомительных целях! Автор не несёт ответственности за ущерб, нанесённый в результате прочтения данной статьи. Приятного чтения!
Что такое SQL-инъекция?
Говоря проще - это атака на базу данных, которая позволит выполнить определённое действие, которое не планировалось создателем скрипта. Инъекция появляется из входящих данных, которые не фильтруются. Самая старая и распространённая ошибка - это не фильтрация передаваемого ID. Грубо говоря, это подставление кавычек во все поля, будь это GET или POST запрос или даже Cookie-файл!
Как вычислить уязвимость, позволяющую внедрять SQL-инъекции?
Понять, уязвим ли тот или иной сайт к SQL-инъекциям довольно просто. Для примера возьмём сайт example.com. На сайте расположена страница, расположенная по адресу example.com/?id=1. То есть, переменная id передаёт значение 1 через GET запрос. Так вот, заходим на эту страницу, добавляя к концу адресной строки одинарную или двойную кавычку (то есть заходим на example.com/?id=1' или на example.com/?id=1"). Если при заходе на страницу появляется ошибка, в которой присутствует sql, mysql и другие значения, связанные с SQL-инъекцией, то поздравляю! Вы нашли SQL-инъекцию!
Итак, возвращаемся к ранее упомянутому сайту example.com. Теперь допустим, что на сайте есть вторая страница, которая находится по адресу example.com/?id=2. Далее нам потребуется перебирать возможные варианты запросов. Тестируем следующие варианты:
example.com/?id=2+OR+1
example.com/?id=2+--
example.com/?id=2+UNION+SELECT+*+FROM+pages+WHERE+id=2
В адресной строке + выполняет роль пробела, так что не пугайтесь.
Если первая страница содержит определённый текст, а вторая страница его содержит, но не отображает, а при использовании любого из перечисленных выше вариантов запросов для второй страницы текст отображается, то сайт также уязвим к SQL-инъекциям.
Защита от SQL-инъекций
Самым лучшим способом защитить свой сайт от SQL-внедрений - это постоянно проверять всё - числа, даты, строки, данные в специальных форматах и так далее.
Можно ли сейчас найти SQL-уязвимость?
К сожалению, в нынешних реалиях найти SQL-инъекцию среди обычных сайтов сложно, а среди сайтов крупных компаний (например, microsoft.com, google.com, apple.com, yandex.ru, mail.ru, bing.com, vk.com, ok.ru, youtube.com и так далее) - почти невозможно. Связано это с тем, что сайты крупных компаний с первой половины 2010-х стали принимать необходимые меры для защиты своих сайтов. Именно поэтому в 2007-2012 годах поиск SQL-инъекции не составлял труда. Сейчас, в 2020 году, ситуация совсем другая.
Ну, а на этом всё. Дальнейший обзор SQL-инъекций и их использование с помощью sqlmap будет в следующей статье.