Популярность веб-приложений постоянно растет, поскольку с их помощью предприятия и корпорации размещают множество своих сервисов. Однако, организации по-прежнему сталкиваются с уязвимостями в веб-приложениях.
Уязвимость — это недостаток в системе, который киберпреступник может использовать для получения несанкционированного доступа, запуска вредоносного кода, установки вредоносных программ и кражи конфиденциальной информации.
Поскольку кибератаки представляют большую угрозу для компаний, отсутствие знаний о безопасности является основной причиной появления различных типов уязвимостей, которые сегодня затрагивают многие веб-приложения. Чтобы понять, с какими уязвимостями вы можете столкнуться, лучше всего начать с основ. В этой статье мы рассмотрим основные типы недостатков веб-приложений и их влияние на систему.
Когда программа пытается поместить в буфер больше данных, чем она может сохранить, или она пытается поместить данные в область памяти после буфера, возникает переполнение буфера. Это может уничтожить данные и приложение, а также даст возможность злоумышленнику выполнить вредоносный код для получения доступа к системе.
Эксплойт переполнения буфераХакер может использовать уязвимость переполнения буфера, чтобы повредить стек вызовов (выполнения) веб-приложения, выполнить произвольный код и захватить контроль над компьютером. Ошибки переполнения буфера могут затрагивать серверы приложений и веб-серверы, а также веб-приложения, использующие графические библиотеки.
Согласно OWASP (Open Web Application Security Project), существует 2 типа атак переполнения буфера:
Пример переполнения буфера в куче:
Буферу выделяется память кучи с фиксированным размером, но строка может превысить этот размер, что приведет к переполнению.
Пример переполнения буфера на основе стека:
Этот фрагмент кода выделяет буфер размером 64 байта для хранения имени хоста, однако, имя хоста может оказаться больше 64 байт. Если злоумышленник укажет адрес, который преобразуется в очень большое имя хоста, функция может перезаписать конфиденциальные данные или даже передать поток управления злоумышленнику.
DoS-атака (Denial of Service, отказ в обслуживании) направлена на отключение машины или сети, чтобы сделать устройство недоступным для пользователя. Злоумышленник переполняет устройство жертвы трафиком или отправляет информацию, которая вызывает сбой. Однако, DoS-атаку легко заблокировать и отследить, поскольку в атаке задействовано только одно устройство.
Типы DoS-атак
По сути, IP4-пакет имеет максимальный размер 65 535 байт. Когда злоумышленник отправляет пакет большего размера, целевая система разбивает его на несколько пакетов меньшего размера и пропускает их. Когда пакеты снова собираются воедино, это вызывает переполнение буфера, что может привести к зависанию или сбою машины.
Эта инъекционная атака позволяет выполнять вредоносные инструкции SQL, которые могут управлять сервером базы данных веб-приложения. Злоумышленник может использовать уязвимости SQL-инъекции для обхода защиты приложения. Также хакер может вмешаться в запросы, отправляемые в базу данных, такие как изменение или удаление данных, а также может вызвать постоянные изменения в поведении приложения.
Сканирование на наличие уязвимостей SQLi позволяет убедиться, что доступ к важной информации закрыт, и есть возможность улучшить защиту сервера для смягчения атак. Существует множество различных атак SQL-injection, которые позволяют хакеру: выполнять следующие действия:
Межсайтовые сценарии нацелены на пользователей приложений путем вставки JavaScript-кода в выходные данные приложения. Принцип XSS заключается в изменении сценариев веб-приложения таким образом, чтобы они работали так, как хочет злоумышленник.
XSS позволяет хакеру запускать сценарии в браузере жертвы, что позволяет перехватить сеанс пользователя или перенаправить жертву на вредоносный сайт. XSS позволяет неавторизованному злоумышленнику выполнить код в браузере доверенного пользователя и получить доступ к определенным типам данных, а XSS-уязвимость также позволяет перехватить и контролировать данные пользователя. В результате киберпреступник получает контроль над сайтом или приложением. В XSS-атаках веб-приложение является не целью, а инструментом для захвата контроля над данными пользователя.
CSRF-атака обманом заставляет пользователя выполнить определенное действие, которое позволит злоумышленнику получить доступ к устройству через установленный браузер жертвы. Целями атаки являются почтовые клиенты, Facebook, Instagram (соцсети Facebook и Instagram признаны экстремистскими и запрещены в России), а также приложения для онлайн-банкинга.
Для атаки может использоваться cookie-файл сеанса вошедшего в систему пользователя. Этот файл сохраняет учетные данные, чтобы пользователь не вводил их заново.
Уязвимость удаленного выполнения кода (Remote code execution, RCE) позволяет злоумышленнику удаленно выполнить произвольный код на устройстве жертвы. RCE-уязвимость могут привести к различным атакам: от запуска вредоносного ПО до получения хакером полного контроля над скомпрометированной машиной.
RCE-уязвимость может поставить под угрозу приложение и веб-сервер, а также может привести к повышению привилегий, возможности настроить network pivoting и установлению постоянства.
Знание основ дает вам лучшее понимание угрозы. Чтобы иметь возможность противостоять атакам и сохранить безопасность системы, нужно знать основную информацию об угрозах - что представляют собой уязвимости и как их можно использовать в атаках.
Понимание основ распространенных уязвимостей и атак необходимо для того, чтобы иметь возможность смягчить угрозу. Организациям следует внедрить регулярное сканирование уязвимостей, чтобы свести к минимуму количество недостатков в веб-приложениях.