УДК 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).
Беликов Георгий Витальевич, студент, [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
МЕТОДИКА ПРОСТРАНСТВЕННО-ВРЕМЕННОЙ ОБРАБОТКИ ШИРОКОПОЛОСНЫХ СИГНАЛОВ И ЕЕ РЕАЛИЗАЦИИ В АДАПТИВНЫХ
АНТЕННЫХ РЕШЕТКАХ
С.Л. Алешин, М.Р. Бибарсов, А.Н. Новиков
В статье представлена методика пространственно-временной обработки широкополосных сигналов, при которой формируются «нули» диаграммы направленности адаптивной антенной решетки в направления помеховых сигналов. Так же представлена возможная реализация данной методики в адаптивных антенных решетках.
Ключевые слова: адаптивная антенная решетка, адаптивный процессор, диаграмма направленности, вектор весовых коэффициентов, пространственно-временная обработка, отношение сигнал/(помеха+шум).
В современном мире большое значение имеет электромагнитная совместимости радиоэлектронных средств (РЭС) и борьба с помехами естественного и преднамеренного характера. Существует множество методов защиты от помех, таких как временное, частотное, кодовое разделение сигналов и их комбинации, а также методы помехоустойчивого кодирования.