Внедрение кода, часто называемое удаленным выполнением кода (RCE), — это атака, совершаемая благодаря способности злоумышленника внедрить и выполнить вредоносный код в приложение; инъекционная атака. Этот внешний код способен нарушить безопасность данных, поставить под угрозу целостность базы данных или частную собственность. Во многих случаях он может обойти контроль аутентификации, и обычно эти атаки связаны с приложениями, выполнение которых зависит от ввода данных пользователем.
Как правило, приложения более уязвимы, если код выполняется без предварительной проверки. Ниже показан простой случай уязвимого кода.
В приведенном выше примере информационная страница PHP уязвима и будет отображаться, если будет запущен URL-адрес http://example.com/?code=phpinfo();.
В связи с тем, что взаимодействие пользователя с приложениями становится все более необходимым в современном онлайн-мире, внедрение кода выросло и стало реальной угрозой для многих онлайн-ресурсов.
Типы внедрения кода
В основном существует четыре типа внедрения кода: внедрение SQL, внедрение сценария, внедрение оболочки и динамическая оценка. Все они имеют один и тот же принцип работы, то есть код вводится в приложения и выполняется ими, но я уделю особое внимание двум инъекциям SQL и внедрению скриптов.
Как работают SQL-инъекции
В случае внедрения SQL-кода атака направлена на повреждение законного запроса к базе данных с целью получения фальсифицированных данных. Злоумышленнику сначала необходимо найти входные данные в целевом веб-приложении, которые включены в запрос SQL.
Этот метод эффективен только в том случае, если веб-приложение содержит пользовательский ввод, включенный в оператор SQL. Затем можно вставить полезную нагрузку (вредоносный
Contents
- 1 Типы внедрения кода
- 2 Как работают SQL-инъекции
- 3 Внедрен
Как работают SQL-инъекции
3">3.1 Как предотвратить внедрение скриптов
Типы внедрения кода
на сервере базы данных.Следующий псевдокод на стороне сервера представляет собой простой пример аутентификации, которая может оказаться уязвимой для SQL-инъекций.
В приведенном выше коде злоумышленник может вставить полезную нагрузку, которая изменит оператор SQL, выполняемый сервером базы данных. В примере в поле пароля будет установлено значение:
password' OR 1=1
Это автоматически приводит к выполнению следующего оператора на сервере базы данных:
SELECT id FROM users WHERE username='username' AND password='password' OR 1=1
Что может SQL-инъекция
Это наиболее распространенный тип внедрения кода. Учитывая тот факт, что SQL — это язык, используемый для манипулирования данными, хранящимися в системах управления реляционными базами данных (СУБД), атака с возможностью создания и выполнения операторов SQL может использоваться для доступа, изменения и даже удаления данных.
Это может дать злоумышленнику возможность обойти аутентификацию, полностью раскрыть данные, хранящиеся в базе данных, поставить под угрозу целостность данных и вызвать проблемы с отказом, изменяя балансы и аннулируя транзакции.
Как предотвратить SQL-инъекции
Есть несколько шагов, которые помогут сделать ваши приложения менее уязвимыми, но перед любым из этих шагов лучше всего предположить, что все отправленные пользователем данные являются вредоносными, и никому не доверять. Тогда вы можете рассмотреть следующее:
- Отключите использование динамического SQL – это означает, что нельзя создавать запросы к базе данных на основе пользовательского ввода. При необходимости очистите, проверьте и экранируйте значения перед выполнением запроса с входными данными пользователя.
- Используйте брандмауэр. Брандмауэр веб-приложений (программный или прикладной) поможет фильтровать вредоносные данные.
- Покупайте лучшее программное обеспечение. Это просто означает, что программисты будут нести ответственность за проверку и исправление ошибок.
- Зашифруйте или хешируйте пароли и все другие имеющиеся у вас конфиденциальные данные, включая строки подключения.
- Избегайте подключения к базе данных с помощью учетных записей с правами администратора, если в этом нет крайней необходимости.
Внедрение скрипта
Эта уязвимость безопасности представляет собой угрозу, которая позволяет злоумышленнику внедрить вредоносный код прямо через веб
Что может SQL-инъекция
данными, через элементы пользовательского интерфейса. Эту атаку часто называют межсайтовым скриптингом или XSS.<script>
, <meta>
, <html>
, <body>
, <embed>
, <frameset>
, <img>
наиболее часто используются для внедрения скриптов.
Как предотвратить внедрение скриптов
Действия по предотвращению внедрения скриптов зависят от используемого вами программного кода. Обычно вам нужно:
- проверять и очищать вводимые пользователем данные (поля ввода любой формы), удаляя или экранируя потенциально вредоносный контент.
- очистить строки запроса в URL
- проверять и очищать все формы данных, массивов и объектов перед выполнением на сервере
Заключение
Проще говоря, профилактика лучше лечения. Благодаря новым обновлениям в технологиях наши системы будут подвергаться большему количеству угроз. Чтобы оставаться в курсе собы