существуют разработки веб-приложений, самые основные требования безопасности и защиты от SQL-инъекции. Фактически, помимо SQL-инъекции, Есть много других инъекционных атак. Атаки с внедрением — одна из наиболее распространенных атак на веб-приложения.
В этой статье будут представлены понятия, типы, принципы инъекционных атак и способы защиты от них.
Атаки с внедрением подразумевают, что злоумышленники внедряют свой собственный, тщательно созданный код атаки, в который приложение получает ввод пользователя, чтобы выполнить произвольные операции, подделать данные или получить конфиденциальную информацию.
Атаки с внедрением — один из наиболее распространенных типов атак на веб-приложения, и успешная атака приведет к риску конфиденциальности, целостности и доступности приложения.
Распространенные типы инъекционных атак включают в себя:
SQL-инъекция — это место, где злоумышленник существующего приложения получает входные параметры инъекции вредоносного оператора SQL с целью получить конфиденциальную информацию и подделать ее.
В веб-приложениях вводимые пользователем данные часто используются в качестве условий запроса к базе данных и заполняются операторами SQL.
Дайте каштан:
Предположим, существует форма входа, где пользователи могут войти в систему, введя свое имя пользователя и пароль.
Обычная команда SQL может выглядеть так:
SELECT * FROM users WHERE username = 'Windeal' AND password = '123456'
Если пароль 123456 является неверным, пользователь не сможет войти в систему.
Однако злоумышленник может внедрить вредоносный код «' OR 1=1» в параметр имени пользователя, например:
SELECT * FROM users WHERE username = 'Windeal' OR 1=1--' AND password = 'mypassword'
В результате, несмотря на неправильный пароль, злоумышленник успешно использовал SQL-инъекцию, чтобы обойти проверку входа в систему (часть запроса, подтверждающая ключевой пароль, была закомментирована).
Вот некоторые распространенные типы SQL-инъекций:
SQL-инъекция на основе ошибок обычно встречается в сообщениях об ошибках приложения. Злоумышленник может изменить формат команды SQL, чтобы приложение сгенерировало сообщение об ошибке, содержащее конфиденциальную информацию о внутренней базе данных, используемой приложением.
Злоумышленники используют чувствительные ко времени команды SQL, чтобы определить, успешно ли выполнен внедренный оператор SQL, тем самым увеличивая вероятность успеха собственного внедрения. Злоумышленники добавляют временные задержки к написанным ими операторам SQL, чтобы определить, соответствуют ли результаты их ожиданиям, что позволяет им в дальнейшем использовать скомпрометированные приложения и ресурсы сервера.
Слепое внедрение означает, что злоумышленник не может напрямую видеть введенную ответную информацию и обычно использует логическое слепое внедрение и внедрение с задержкой по времени для динамического обнаружения вредоносного кода в данных.
Внедрение запроса объединения — это метод выполнения двух или более запросов к базе данных в одном запросе SQL. Злоумышленники часто используют команду UNION SELECT для добавления новых операторов запроса к запросам SQL. Этот метод внедрения позволяет объединить данные из двух или более таблиц в один ответ, предоставляя злоумышленнику доступ к данным, которые не возвращаются приложением.
Хранимая процедура — это предварительно скомпилированный блок кода SQL, который может быть выполнен в рамках транзакции. Злоумышленник может использовать внедрение хранимых процедур для внедрения команд SQL и выполнения вредоносного кода в базе данных для выполнения несанкционированных действий и/или загрузки дополнительного вредоносного кода.
Стекированные запросы позволяют выполнять несколько запросов в одном запросе. Злоумышленник может использовать методы внедрения многоуровневых запросов для выполнения команд запросов на серверах баз данных и манипулирования данными в приложении.
определение:
введение команда имеет тип, аналогичный SQL Метод инъекционной атаки. Злоумышленник делает это, вводя в приложение определенную строку команд операционной системы или применяя определенное исправление безопасности приложения для обхода проверок безопасности на входе.
принцип:
Злоумышленники внедряют вредоносный код, вводя полезную нагрузку команд операционной системы или сценариев оболочки, например, добавляя, удаляя, сохраняя на диск, манипулируя файловой системой и выполняя произвольный код. Эти атаки могут осуществляться через множество эфемерных полей ввода и API или через регулярно выполняемые команды оболочки.
Пример:
Предположим, мы предоставляем функцию поиска. Нижний уровень предназначен для использования команды grep для проверки наличия определенной строки в файловой системе.
Если мы вводим в поле поиска системные команды, то заполняем
searchterm | rm /f /
тогда выполнение сервера может стать
grep searchterm | rm /f /
Это приводит к удалению файлов на сервере.
Профилактика и защита:
Для эффективной профилактики и защитывведение командная атака,Могут быть приняты следующие меры:
определение:
LDAP-инъекция — метод атаки,Злоумышленник отправляет вредоносные данные или фильтр LDAP на запрос LDAP,Для достижения цели доступа к личным сообщениям.
принцип:
Злоумышленник вводит специально созданные данные в запрос или фильтр LDAP для имитации обычных операций запроса LDAP. Однако после завершения запроса вредоносные данные злоумышленника отображаются службой LDAP, что вызывает проблемы с безопасностью.
Профилактика и защита:
Атаки LDAP-инъекций можно защитить и предотвратить с помощью следующих мер, таких как:
определение:
OSвведение команда — это тип атаки, при которой злоумышленник отправляет серию вредоносных входных данных в место, где ожидалось ввести только данные. система (ОС) отправляет команды.
принцип:
Злоумышленники внедряют вредоносные данные и права доступа к командам в полезную нагрузку команд ОС для выполнения вредоносных действий, которые они не хотят фиксировать операционной системой или приложениями, таких как добавление, удаление, изменение, манипулирование файловыми системами и непосредственное выполнение произвольного кода. .
Профилактика и защита:
Чтобы предотвратить атаку с использованием команды внедрения ОС, вы можете использовать следующие решения:
определение:
Атаки с внедрением XML относятся к злоумышленникам, которые используют уязвимости синтаксического анализатора XML для внедрения вредоносного кода во время процесса ввода и анализа XML-данных для достижения цели атаки.
принцип:
Злоумышленники используют уязвимости внедрения XML, внедряя вредоносные данные XML или формата файла XML во входные данные XML, которым не доверяют, или используют операции логического запроса XPath для реализации определенных операций фильтрации. В результате анализатор не может правильно идентифицировать вредоносный код, тем самым выполняя вредоносные операции.
Пример:Вот простой пример,Демонстрирует, как провести атаку XMLинъекция:
Рассмотрим приложение, которое принимает предоставленные пользователем XML-данные и использует эти данные для генерации вывода в формате HTML. Злоумышленник может предоставить следующие вредоносные XML-данные:
<user>
<name>John</name>
<role>Admin</role>
<script>alert('XSS Attack')</script>
</user>
Если приложение неправильно обрабатывает входные данные, оно может вставить эти вредоносные данные XML в выходные данные HTML, что приведет к атаке XSS (межсайтовый скриптинг). Вредоносный скрипт злоумышленника выполняется в браузере пользователя.
Профилактика и защита:
Чтобы эффективно предотвратить атаки с внедрением XML и защититься от них, можно использовать следующие решения: