Во многих случаях, когда злоумышленники используют инструмент внедрения, они обнаруживают, что инструмент не может расшифровать имена таблиц и имена полей. Это связано с тем, что все инструменты имеют собственный словарь, который включает имена таблиц и имена полей, если администратор, если имя таблицы и. имена полей изменяются так, что их нет в этом словаре, тогда используемый нами инструмент не сможет угадать имя поля и имя таблицы. В следующей статье мы начнем с анализа ручного внедрения, чтобы построить линию защиты от SQL-инъекций.
Злоумышленник создаст простое условие оценки, чтобы определить, имеет ли страница уязвимость внедрения. Общие шаги следующие:
Здесь должна быть обнаружена страница http://127.0.0.1/111/view.asp?id=198
1. . Intrumer Если вы хотите вручную внедрить сайт, вам необходимо настроить браузер так, чтобы сообщения об ошибках могли возвращаться во время ручного внедрения. Шаги следующие:
щелкните правой кнопкой мыши браузер и выберите «Свойства» и выберите «. Дополнительно» во всплывающем диалоговом окне. Вкладка. Как показано ниже:
Рисунок 1.
Затем удалите крючок перед «Показывать дружественные сообщения об ошибках HTTP» и, наконец, нажмите кнопку «Применить».
2. Злоумышленник отправляет в браузер следующий URL-адрес:
http://127.0.0.1/111/view.asp?id=198 и 1=1.
Если существует уязвимость SQL-инъекции, можно запросить базу данных 1=. 1 — это идентификатор. Игнорировать, поэтому будет возвращена обычная страница. Эта страница аналогична http://127.0.0.1/111/view.asp?id=198 . В этот момент злоумышленник решит, что это сайт. ожидается введение инъекции. Если возвращаются некоторые сообщения об ошибках, некоторые элементарные злоумышленники могут покинуть сайт.
3. Злоумышленник далее отправляет в браузер следующий URL:
http://127.0.0.1/111/view.asp?id=198 и 1=2
1=2 — это неравенство идентичности. Если сайт поддерживает запросы к базе данных, он, вероятно, вернет информацию, как показано на рисунке ниже:
Рисунок 2.
Как правило, если злоумышленник выглядит так, как показано на рисунке выше, можно с уверенностью сказать, что этот сайт может осуществлять атаки с помощью SQL-инъекций.
Однако во многих случаях злоумышленник может быстро определить, имеет ли целевой сайт уязвимость к SQL-инъекции, просто используя одинарную кавычку и отправив браузеру следующий URL-адрес:
http://127.0.0.1/111/view.asp? id=198'if Возврат следующей информации указывает на то, что существует более половины вероятности существования уязвимости внедрения:
Ошибка поставщика Microsoft OLE DB для драйверов ODBC '80040e14'
[Microsoft] [ODBC Microsoft Access Driver] Синтаксическая ошибка строки находится в выражении запроса «id =1». /list.asp, строка 50
4. В это время злоумышленник начинает создавать специальный оператор SQL-запроса для запроса имени таблицы базы данных сайта и отправляет по URL-адресу следующий оператор:
http://127.0.0.1/ 111/view.asp?id= 198 и существует (выберите * от администратора).
Этот оператор запрашивает базу данных, существует ли таблица администратора. Если она существует, будет возвращена обычная страница. Если таблица не существует, произойдет ошибка. страница будет возвращена. Как правило, злоумышленники сначала проверяют часто используемые имена таблиц, которые также являются именами таблиц и именами полей, которые существуют в словаре паролей общих инструментов внедрения. Если имя таблицы не входит в число часто используемых имен таблиц, злоумышленник будет использовать социальную инженерию, чтобы угадать имя таблицы. В этом случае злоумышленник имеет низкую вероятность угадать имя таблицы.
5. Получив имя таблицы, злоумышленник начинает создавать оператор запроса для запроса имени поля базы данных и отправляет следующий запрос на URL-адрес:
http://127.0.0.1/111/view.asp?id=198 и существует (выберите пользователя из списка администраторов).
Это утверждение предназначено для запроса таблицы администратора в базе данных, существует ли поле пользователя. Если оно существует, будет возвращена обычная страница. Если оно не существует, будет возвращена страница с ошибкой.
7. Далее злоумышленник начинает определять значение поля id и составляет следующий оператор для запроса значения id: http://127.0.0.1/111/view.asp?id=198 и существует (выберите id from admin, где id=1 )
возвращает правильную страницу, если она правильная, и возвращает страницу ошибки, если она неверна.
6. Угадав имя таблицы и имя поля, злоумышленник начал строить запрос на угадывание длины учетной записи администратора и отправил на URL-адрес следующий запрос:
http://127.0.0.1/111/view.asp?id =198 и существует (выберите идентификатор из admin, где len(user)<6 и id=1).
Этот оператор предназначен для запроса диапазона длины имени пользователя в поле пользователя, что означает, что длина меньше 6. Если это так правильно, он вернется на нормальную страницу, если он неправильный, он вернется на страницу с ошибкой.
Ограничьте область действия, а затем создайте следующий оператор, чтобы определить конкретную длину имени пользователя:
http://127.0.0.1/111/view.asp?id=198 и существует (выберите идентификатор из администратора, где len(user)= 5 и id=1)
Правильно. Если произойдет ошибка, будет возвращена обычная страница. Если произойдет ошибка, будет возвращена страница с ошибкой.
8. Затем злоумышленник выполняет последний шаг по созданию оператора для запроса имени пользователя администратора и отправляет следующий запрос на URL-адрес: http://127.0.0.1/111/view.asp?id=198 и существует( выберите count(*) from admin, где left(user,1)='a')
Этот оператор предназначен для угадывания имени пользователя по левой стороне имени пользователя до a. Если оно верно, произойдет возврат на обычную страницу. Если это неправильно, он вернется на страницу ошибки. Угадайте один за другим. Угадайте. Во второй позиции измененный оператор (user,2)='ad' и так далее.
После того как злоумышленник получит имя пользователя и пароль, внедрение близится к завершению.
Что касается метода предотвращения, то он очень прост. Из описанного выше процесса мы видим, что если имя таблицы и имя поля не входят в число часто используемых имен таблиц и полей, злоумышленник будет использовать социальную инженерию, чтобы угадать. имя таблицы и имя поля, измененные администратором, достаточно сложны, злоумышленник вторгнется. Если злоумышленник все еще не может достичь цели, существует еще один простой метод защиты, который заключается в загрузке некоторых патчей против внедрения из Интернета и их применении. Метод заключается в изменении файлов сайта и добавлении операторов фильтрации для фильтрации заявлений, отправленных злоумышленниками, для предотвращения инъекций. Да, я не буду здесь объяснять его принцип.