Уязвимости веб приложений

(Просто о сложном)

В настоящее время до 70% сайтов имеют критически опасные уязвимости.


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

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

Следует учесть, что основная масса уязвимостей сайтов связана с использованием уязвимых версий веб серверов, CMS, СУБД и ошибками программистов. При этом, наличие уязвимостей мало завит от используемого языка программирования.

Основной причиной возникновения уязвимостей в исходном коде сайта является отсутсвие проверки вводимых данных в формы и запросы к сайту. Наиболее опасные виды уязвимостей к атакам на веб приложения описаны далее.

SQL инъекции

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

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

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


Blind SQL инъекции (слепые SQL инъекции)

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


Коммандные инъекции (Command Injection)

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


PHP инъекции (PHP Injection)

Атака методом PHP инъекции осуществляеся методом передачи в запросе к серверу специальных комманд языка PHP. Как правило, осуществлении атаки становится возможным в случае неправильной фильтрации пользовательских запросов или неправильной настройки правил разграничения доступа. При успешной атаке злоумышленник может получить доступ к конфиденциальной информации или изменить значимые файлы на сервере.


SSI инъекции (Server Side Injection)

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


XML инъекции (XML Injection)

Атака методом XML инъекции осуществляется путем вставки или "инъекции", частичного или полного измененения структуры XML документа приложения. При этом, парсер XML документа неправильно считывает XML данные документа, что позволяет атакующему выполнить произвольный код на сервере.


Межсайтовый скриптинг (Cross-Site Scripting, XSS)

Для термина используют сокращение «XSS». Межсайтовый скриптинг (XSS), возникает, когда злоумышленник внедряет в браузер жертвы исполняемый код в рамках одного http-запроса. Код атаки не хранится внутри самого приложения, это непостоянное и только пользовательское воздействие, которое открывает вредоносные ссылки или веб-страницы третьих сторон. Код атаки, входящий в состав созданного URI или http-параметра, неправильно обрабатывается приложением, и возвращается жертве. Отраженный межсайтовый скриптинг является наиболее распространенным типом атак. Долгое время межсайтовый скриптинг считался не очень опасным и ему не уделялось ложного внимания.В настоящее время межсайтовый скриптинг находится на 7 месте по опасности в рейтинге рисков Web-приложений OWASP Top 10.


Ошибки разграничения прав доступа к каталогам (Directory Traversal)

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


Использование уязвимых протоколов и приложений

Уязвимости, возникающие за счет использования устаревших и уязвимых версий протоколов (уязвимые версии SSl и TLS, незащищенные протоколы http, ftp и пр.) или использования уязвимых версий операционных систем, веб серверов или веб приложений позволяют атакующему получить полный контроль над сервером и получить доступ ко всей информации сервера.