Мегаобучалка Главная | О нас | Обратная связь


Демонстрация атаки с использованием SQL-инъекции.



2019-08-13 203 Обсуждений (0)
Демонстрация атаки с использованием SQL-инъекции. 0.00 из 5.00 0 оценок




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

Теперь проведем эксперимент на веб-сервере. В качестве площадки для проведения демонстрационного тестирования мы будем использовать веб-сайт вымышленного банка Altoro Mutual (http://demo.testfire.net). Банк применяет производственную версию веб-сервера, которая имеет естественные уязвимости.

Для начала откроем в своём веб-браузере этот целевой сайт.

 

Рисунок 2. Пример стартовой страницы сайта.

Вы увидите страницу приветствия, показанную на рис.2. В правой части верхней строки находится ссылка Sign In, которая является нашей целью в этом примере. При нажатии на эту ссылку вы попадаете на страницу входа в систему.

Рисунок 3. Страница входа в систему.

 

 

На странице входа в систему, как показано на рис.3, с помощью плагина Firebug браузера Mozilla Firefox можно увидеть, что веб-сайт выполняет валидацию полей с помощью JavaScript-функции confirminput.

При попытке ввести пробелы в любом из этих полей появляется сообщение о недопустимости использования пробелов для полей. Проработаем эту идею более детально. Попробуйте ввести в поле пароля произвольное имя пользователя и специальный символ, чтобы увидеть реакцию приложения. В данном конкретном случае, что иллюстрирует рис.4, я ввел тестовое имя пользователя (donald) и пароль, состоящий из символа (').

Рисунок 4. Сообщение веб-страницы об ошибке

 

 

Вместо краткого сообщения о некорректном сочетании имени пользователя и пароля веб-сервер великодушно предоставляет подробную информацию о SQL-запросе. В частности, использование символа (') нарушило синтаксис запроса для параметра password к внутренней базе данных. Мы видим ошибку в конструкции WHERE, которая показана в следующем SQL-запросе:

query = SELECT User FROM Users

WHERE Username = 'donald' AND Password = '''

Мы можем воспользоваться этим знанием, чтобы оценить уязвимость этого процесса.

В языке SQL символы (--) служат признаком комментария. Признак комментария дает указание SQL-базе данных проигнорировать остальную часть текущей строки.

С целью успешного выполнения запроса без знания пароля можно попытаться использовать SQL-комментарий для отбрасывания фрагмента запроса - а именно, фрагмента с паролем. Из предыдущего примера мы знаем, что ввод символа (') нарушил запрос. С учетом этого измените запрос, вставив определенный SQL-код в поле Username.

В данном случае я ввел don'-- в поле Username, а затем произвольную информацию в поле Password. В результате веб-сервер выдал сообщение об ошибке, показанное ниже на рис.5.

 

Рисунок 5 Ошибка с отсутствием ваших данных.

 

Вместо того чтобы вызывать исключение (как я показал на рис. 4), теперь я изменяю запрос таким образом, чтобы он воспрепятствовал намерениям разработчика. Теперь внутри системы этот запрос будет выглядеть следующим образом:

query = SELECT User FROM Users

WHERE Username = 'don'--' AND Password = '*'

Очевидно, что простое добавление символов ('--) в поле Username сделало фрагмент запроса с паролем несущественным, тем не менее, этот запрос передается в базу данных как успешный. Опираясь на эту информацию, предположим, что в системе имеется административная учетная запись с именем admin. Если вы выполните эту же операцию, но с именем пользователя admin'--, то сможете успешно войти в систему по этой учетной записи и увидеть имя пользователя admin, найти другие сведения об учетной записи admin и использовать учетную запись admin в качестве собственной учетной записи.

Итак, с помощью скромных познаний в области SQL мы успешно обошли внутреннюю проверку на ошибки незащищенного веб-сайта и аутентифицировали себя в качестве его администратора без знания соответствующего пароля.

Если учетная запись admin не существует (или недоступна извне), мы можем получить доступ к первой учетной записи в таблице Users с помощью немного усложненного имени пользователя. В этом случае мы изменим запрос таким образом, чтобы предоставляемое условие всегда имело значение true. Этот результат достигается вводом имени пользователя вида  «'OR 1 = 1-- ». Хотя эта уязвимость и не предоставит вам привилегий администратора, она обеспечит более глубокий доступ к веб-сайту и возможность поиска дальнейших уязвимостей.  

                  



2019-08-13 203 Обсуждений (0)
Демонстрация атаки с использованием SQL-инъекции. 0.00 из 5.00 0 оценок









Обсуждение в статье: Демонстрация атаки с использованием SQL-инъекции.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (203)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)