Обновить

SQL-инъекции для самых маленьких

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели253K
Всего голосов 17: ↑13 и ↓4+12
Комментарии13

Комментарии 13

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

Тем более что описанное применимо далеко не к каждой СУБД.. например, в MySQL ни один из примеров не сработает - хоть вводи их в клиента прямо с инъекцией.

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

Кстати да, было бы интересно узнать как раз про то, в каких условиях возникают уязвимости.

В остальном лично для себя нашла пользу и в имеющейся информации)

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

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


Потому что никаких "слепых уязвимостей" не бывает.
Уязвимость всегда только одна — возможность модифицировать код SQL.
А вот способов использовать, или эксплуатировать эту уязвимость — бесконечное количество.
Важным следствием понимания этого факта является простое правило — что защищаться следует не от бесконечного количества разных вариантов эксплуатации, а от одной простой уязвимости, соблюдением двух простых правил:


  • любые данные попадают в запрос только через символы подстановки
  • любые другие элементы запроса — только после фильтрации через белый список разрешенных значений

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

Да какая разница-то, что где написано? Я не про статью писал, а про инъекции.
Тем более что так пишут все кому не лень. Привычная ошибка типа "силиконовой долины".


Если уж говорить о том, как "должно быть", то я повторюсь — "слепых" инъекций не бывает. Уязвимость бывает только одна: это возможность манипулировать кодом SQL. Возможность сделать эту самую инъекцию. И она не может быть слепой или не слепой. Она может только быть или не быть.
"Слепая инъекция" — это не отдельный тип инъекций, как можно подумать из названия. А просто набор техник, эксплуатирующих ту же самую уязвимость, просто в некотором ограниченном окружении. Частный случай, который на самом деле не стоит выделения в отдельную категорию.


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


Вообще, все эти разглагольствования про инъекции — столь же благодатный материал для статей, сколь и бессмысленный. Как я писал выше, количество разных вариантов эксплуатировать инъекцию — бесконечно. Можно писать целые тома с продолжением. А можно просто взять учебник по SQL. Потому что эксплуатация — это не про "инъекции", а про доскональное знание синтаксиса SQL и нетривиальные способы его применения.

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

А можно ссылку на оригинал?

Благодарю!

Но вообще таких материалов в сети навалом, можно легко нагуглить хоть десяток.
Другое дело что сам формат таких статей мне кажется бессмысленным. По сути они ничем не отличаются от дурацкого комикса про мальчика Бобби, с его единственным вариантом DROP TABLES.


Как я говорил выше, реальные инъекции — это не про подборки готовых рецептов, а про мануал по СУБД штудировать + умение нестандартно мыслить + феноменальную усидчивость. Про это, кстати в статьях не пишут. Что взлом чаще всего — это дико изматывающий процесс постоянных проб и ошибок с совершенно мизерным выхлопом.


Вот, кстати, совершенно гениальная история взлома: https://habr.com/ru/articles/708384/
Хотя он и не про инъекции, но примерно показывает сам процесс.

"Это могут быть других" тут явно пропущено слово, это второй абзац

Это машинный или ИИшный перевод без вычитки. Там полно перлов, вроде

Это эффективно удаляет остаток запроса, 

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации