Научная статья на тему 'SQL-ИНЪЕКЦИЯ КАК СПОСОБ ОБХОДА АВТОРИЗАЦИИ'

SQL-ИНЪЕКЦИЯ КАК СПОСОБ ОБХОДА АВТОРИЗАЦИИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1547
115
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВЕБ-ПРИЛОЖЕНИЕ / ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ / ВЕБ-УЯЗВИМОСТЬ / ТЕСТИРОВАНИЕ НА ПРОНИКНОВЕНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Беликов Георгий Витальевич, Крылов Илья Дмитриевич, Селищев Валерий Анатольевич

Рассматривается веб-уязвимость SQL-инъекция как способ несанкционированного доступа к веб-сервисам. Изложены основные методы защиты.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SQL INJECTION AS A WAY TO BYPASS AUTHORIZATION

The SQL injection web vulnerability is considered as a method of unauthorized access to web services. The main methods of protection are described.

Текст научной работы на тему «SQL-ИНЪЕКЦИЯ КАК СПОСОБ ОБХОДА АВТОРИЗАЦИИ»

УДК 004.492.3

DOI: 10.24412/2071-6168-2021-12-217-221

SQL-ИНЪЕКЦИЯ КАК СПОСОБ ОБХОДА АВТОРИЗАЦИИ

Г.В. Беликов, И.Д. Крылов, В.А. Селищев

Рассматривается веб-уязвимость SQL-инъекция как способ несанкционированного доступа к вэб-сервисам. Изложены основные методы защиты.

Ключевые слова: веб-приложение, информационная безопасность, веб-уязвимость, тестирование на проникновение.

Цель данной статьи - исследование уязвимости, которая достаточно часто встречается в веб-сервисах, а также инструментов и методов для «тестирования на проникновение».

Тестирование на проникновение - метод оценки безопасности компьютерных систем или сетей различными средствами, похожими на те, которые используют злоумышленники. Процесс включает в себя активный анализ системы на наличие потенциальных уязвимостей, которые могут спровоцировать некорректную работу целевой системы либо полный отказ в обслуживании. Анализ ведётся с позиции потенциального атакующего и может включать в себя активное использование уязвимостей системы.

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

Существует список «OWASP TOP 10» (рис. 1) как рейтинг из десяти наиболее опасных рисков информационной безопасности для веб-приложений, составленный сообществом экспертов отрасли. Для каждого пункта рейтинга риск установлен экспертами на основе методики OWASP Risk Rating Methodology и включает оценку по следующим критериям: распространенности соответствующих уязвимостей в приложениях (Weakness Prevalence), сложности их обнаружения (Weakness Detectability) и эксплуатации (Exploitability), а также критичности последствий их эксплуатации (Technical Impacts). По понятным причинам в расчетах критичности рисков не учитываются бизнес-последствия от их реализации. Там, где это возможно, названия рисков в рейтинге соотносятся с названиями соответствующих уязвимостей в классификации CWE (Common Weakness Enumeration) [1].

OWASPTop 10 - 2017

Al:2017-Injcction

A2:2Ü17-Br<iken Aiitlu-nlii'iition

A3:20n-Scn5itive Rata Evposure

A4:2017-XML Externa) Entities (XXE)

A5:2017-Brokcn Acccss Contral

A6:2017-Sccurlty Mlsconflguratlon

A7;2017-Cro5s-Sile ScriptinR (XSS)

AS:2017-ln&ecure Deserialization

A9;2017-iJsiiiE Components with kr.own Vulncrabilitics

А 113:2017-1 nsuffielent Logging & Monitoring

Рис. 1. OWASP TOP 10 - наиболее опасные риски информационной безопасности для веб-приложений

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

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

217

кованными может реализовать эксплуатацию простейших уязвимостей. Один из наиболее распространенных и в то же время легко эксплуатируемых типов брешей в современных веб-приложениях - SQL-инъекции [2].

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

Внедрение SQL-кода - один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.

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

Атака типа внедрения SQL может быть возможна из-за некорректной обработки входных данных, используемых в SQL-запросах.

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

SQL-инъекция представляет собой технику для атаки на приложения, использующие базы данных, посредством отсылки вредоносного кода с целью доступа или модификации конфиденциальной информации в базе. Есть множество причин, почему эта уязвимость существует и так популярна, включая некорректную фильтрацию и обработку входных данных [3].

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

Целью рассматриваемой атаки будет Mutillidae, намеренно уязвимое веб-приложение, являющееся частью проекта Metasploitable 2 (уязвимая виртуальная линуксовая машина, используемая для тестирования на проникновение и других практических целей). Будем подключаться к Metasploitable 2 из изолированной сети. В качестве рабочей системы используем Kali Linux.

Первым делом, необходимо проверить, есть ли ограничения на ввод символов и попробовать ввести в поле пароля апостроф ( ' ) и произвольный текст после него. В результате появится сообщение об ошибке (рис. 2).

Error: Failure Is always an option and this situation proves it

Une :49

Code 10

File : torta/mutillidM/process-login-attempt.plip

Message ¡Error executing query: ton hive an error In your SOI syntax; check the manual that corresponds to your MfSOL server vmsioti for trie right syntax to use near '111" at line 1

Trace »Oftarimimfmuliiiidae/imJ«php(%|: include!) *1 {rain}

Diagnotlc Information 5ЕШ'FROM «counts WHERE (jserrame= " ANDpass«ord= "111'

Did you setup/reset the DB?

Рис. 2. Вид сообщения об ошибке

Сообщение об ошибке уже является уязвимостью, поскольку показывает много скрытой информации, такой как расположение файла, в котором находится php-код или диагностическая информация целой строки кода, отвечающей за поля ввода логина/пароля. Самой полезной информацией в этом сообщении будет диагностическая информация строки кода, показывающая его построение. Проанализировав эту строку, можно понять, что ограничений на ввод спецсимволов нет, так как ранее введенный апостроф отобразился в строке «diagnostic information» (это не значит, что нет ограничений на все спецсимволы, но основой рассматриваемой атаки будет внедрение в код апострофа, а после и произвольного кода).

Перед тем, как произвести внедрение SQL-кода, подключаемся к ip адресу Metasploitable 2 через браузер и попадаем на главный экран Metasploitable 2 (рис. 3).

_____ ___I I_________I 1 ___ <_) 1____I L_ I I__I___\

If \ / N _/_'/__[' M I/ Ч 1 _ / I 1 \| I/ _ N _) I

I I Г' I I I __/ II и \ IJ I 1 <_> I I II (_[ I и I I __// __/

LI I I 1_|\_ W :!__/■ _/1 1\_ Л_1\_ I ■_/] i\__ |_ __ I LI

Warning: Never expose this VM to an untrusted network!

Contact: msfdeu[atlmetasploit.com

Login with msfadmin/msfadmin to get started

TWiki

phpMyAdmiii MuttlMag DVWA WebDAV

(рис. 4).

Рис. 3. Вид главного экрана Metasploitable2 Внедрять SQL-инъекцию будем в поле ввода логина и пароля страницы МиШШае

Рис. 4. Вид поля ввода логина и пароля

Security level 0, поэтому можно вводить любые символы в поле ввода, это поможет внедрить SQL-инъекцию, так как при внедрении используются различные спецсимволы и команды (такие как UNION, ' , &, #). Входить будем под логином admin без знания пароля, в этом поможет возможность внедрить спецсимволы. Апостроф или одинарная кавычка в sql означает начало и конец строковых данных, поэтому можно попробовать в поле логина написать admin, а в поле пароля - одинарную кавычку и после нее любые символы, тогда выражение в поле пароля будет иметь вид «'111» (рис. 5).

Error: Failure is always an option and this sit

Line 49

Code 0

File /var/www/mutillldae/process-login-attempt.php

Message Error executing query: Yoj have an error in your SQL syntax; check the manual that corne=

Trace #0/var/www/mutillidae/index.php(96): included #1 {main}

Diagnotic Information SELECT * FROM accounts WHERE username='admin AND password=" 111'

Did you setup/reset the DB?

Рис. 5. Вид сообщения об ошибке c частью нашего кода

Из строчки Diagnostic information можно понять, что символ «одинарная кавычка» (') дает возможность ввести любой код после нее, этой возможностью необходимо воспользоваться. Главное - не забыть поставить в конце выражения знак #, который делает любые символы после себя комментарием.

Чтобы система нас впустила, нужно вставить истинное выражение, например 1=1. Также, чтобы это выражение сработало, воспользуемся логическим «или» («or»). В результате получаем выражение «111' or 1=1 #».

Вставив это выражение, получаем доступ в систему под логином admin (рис. 6).

ий Mutillidae: Born to be Hacked

Version: 2.1.19 Security Level: 0 (Hosed) Hints: Disabled (0 -1 try harder) Logged In Admin: admin (Monkey!)

Ноше Logout Toggle Hints Toggle Security Reset DB View Log View Captured Data

Рис. 6. Вид подтверждения аутентификации

Так же можно внедрить инъекцию в поле логина, с помощью тех же символов. После логина admin можно ввести одинарную кавычку, обозначив конец строчных данных (рис. 7).

Error: Failure is always ал option

Line 49

Code 0

File /var/www/mutillidae/process-login-attempt.php

Message Error executing query: You have an error iri your SQL syntax; check the manu

Trace #0 /var/www/mutillidae/index.php(96): include() #1 {main}

Diagnotic Information SELECT * FROM accounts WHERE username='admin'' AND password='lll'

Did you setup/re;

Рис. 7. Вид сообщения об ошибке с внедренным кодом

Дальше необходимо ввести #, тогда получится, что пароль - это комментарий, а значит, далее можно вводить любую информацию. Итоговое выражение в поле логина будет выглядеть как «а^т'#».

Если ввести это выражение в поле логина, то получим следующий результат (рис. 8).

Mutillidae: Born to be Hacked

Version: 2.1.19 Security Level: 0 (Hosed) Hints: Disabled (0 -1 try harder) Logged In Admin: admin (Monkey!)

Home Logout Toggle Hints Toggle Security Reset DB View Log View Captured Data

Рис. 8. Вид подтверждения аутентификации

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

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

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

- PDO - PHP Data Objects - прослойку, которая предлагает универсальный способ работы с несколькими базами данных. Профит в том, что отсутствует привязка к конкретной системе управления базами данных, то есть это расширение работает как посредник между пользователем и БД (запросы на прямую не отправляются). Принцип действия следующий: сначала осуществляется подключение к базе, потом подготавливается запрос, отдельно указываются переменные и, наконец, запрос выполняется. Данные отправляются уже в виде переменных, то есть если бы в переменной кто-то поставил лишнюю кавычку, сервер бы не принял её как часть запроса. Поэтому попытка испортить запрос через переменную не сработала бы;

- удаление неиспользуемого функционала. Чаще сервер баз данных имеет намного больше функционала, чем от него требуется, а злоумышленник может сыграть на этом;

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

Список литературы

1. OWASP Top 10 - 2017 The Ten Most Critical Web Application Security Risks. OWASP the free and open software security community, 2017. [Электронный ресурс]. -URL: https://safe-surf.ru/specialists/article(дата обращения:18.11.2021).

2. Уязвимость SQL-инъекция [Электронный ресурс]. -URL: https://www.HackWare.ru/SQL-injection(дата_обращения:18.11.2021).

3. Атака на веб-приложения при помощи SQL-инъекции [Электронный ресурс]. -URL: https://www.securitylab.run/analytics/521491.php(дата_обращения:18.11.202l).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Беликов Георгий Витальевич, студент, [email protected], Россия, Тула, Тульский государственный университет,

Крылов Илья Дмитриевич, студент, [email protected], Россия, Тула, Тульский государственный университет,

Селищев Валерий Анатольевич, канд. техн. наук, доцент, sel648val@,rambler. ru, Россия, Тула, Тульский государственный университет

SQL INJECTION AS A WAY TO BYPASS AUTHORIZATION G.V Belikov, I.D. Krylov, V.A. Selishchev

The SQL injection web vulnerability is considered as a method of unauthorized access to web services. The main methods of protection are described.

Key words: web application, information security, web vulnerability, penetration testing.

Belikov Georgy Vitalievich, student, [email protected], Russia, Tula, Tula State University,

Krylov Ilya Dmitrievich, student, [email protected], Russia, Tula, Tula State University,

Selishev Valeryi Anatolievich, сandidate of technical sciences, docent, sel648val@rambler. ru, Russia, Tula, Tula State University

УДК 621.396.677

DOI: 10.24412/2071-6168-2021-12-221-228

МЕТОДИКА ПРОСТРАНСТВЕННО-ВРЕМЕННОЙ ОБРАБОТКИ ШИРОКОПОЛОСНЫХ СИГНАЛОВ И ЕЕ РЕАЛИЗАЦИИ В АДАПТИВНЫХ

АНТЕННЫХ РЕШЕТКАХ

С.Л. Алешин, М.Р. Бибарсов, А.Н. Новиков

В статье представлена методика пространственно-временной обработки широкополосных сигналов, при которой формируются «нули» диаграммы направленности адаптивной антенной решетки в направления помеховых сигналов. Так же представлена возможная реализация данной методики в адаптивных антенных решетках.

Ключевые слова: адаптивная антенная решетка, адаптивный процессор, диаграмма направленности, вектор весовых коэффициентов, пространственно-временная обработка, отношение сигнал/(помеха+шум).

В современном мире большое значение имеет электромагнитная совместимости радиоэлектронных средств (РЭС) и борьба с помехами естественного и преднамеренного характера. Существует множество методов защиты от помех, таких как временное, частотное, кодовое разделение сигналов и их комбинации, а также методы помехоустойчивого кодирования.

i Надоели баннеры? Вы всегда можете отключить рекламу.