Полное руководство по основам уязвимостей

Специальный корреспондент
Собака

Собака

Пресс-служба
Команда форума
Private Club
Регистрация
13/10/15
Сообщения
54.850
Репутация
62.390
Реакции
277.056
RUB
0
Популярность веб-приложений постоянно растет, поскольку с их помощью предприятия и корпорации размещают множество своих сервисов. Однако, организации по-прежнему сталкиваются с уязвимостями в веб-приложениях.

image



Уязвимость — это недостаток в системе, который киберпреступник может использовать для получения несанкционированного доступа, запуска вредоносного кода, установки вредоносных программ и кражи конфиденциальной информации.
Поскольку кибератаки представляют большую угрозу для компаний, отсутствие знаний о безопасности является основной причиной появления различных типов уязвимостей, которые сегодня затрагивают многие веб-приложения. Чтобы понять, с какими уязвимостями вы можете столкнуться, лучше всего начать с основ. В этой статье мы рассмотрим основные типы недостатков веб-приложений и их влияние на систему.
[H3] Переполнение буфера (Buffer Overflow) [/H3]
Когда программа пытается поместить в буфер больше данных, чем она может сохранить, или она пытается поместить данные в область памяти после буфера, возникает переполнение буфера. Это может уничтожить данные и приложение, а также даст возможность злоумышленнику выполнить вредоносный код для получения доступа к системе.
Эксплойт переполнения буфера
Хакер может использовать уязвимость переполнения буфера, чтобы повредить стек вызовов (выполнения) веб-приложения, выполнить произвольный код и захватить контроль над компьютером. Ошибки переполнения буфера могут затрагивать серверы приложений и веб-серверы, а также веб-приложения, использующие графические библиотеки.
Типы уязвимостей переполнения буфера
Согласно OWASP (Open Web Application Security Project), существует 2 типа атак переполнения буфера:
  • Переполнение буфера на основе стека. Киберпреступник отправляет в приложение данные, содержащие вредоносный код. Затем приложение сохраняет данные в буфере стека. Данные в стеке перезаписываются, возвращая указатель, который предоставляет контроль над передачей данных злоумышленнику.
  • Переполнение буфера на основе кучи. Эта атака переполняет память программы за пределами используемой памяти, и данные в куче перезаписываются для использования некоторых аспектов программы. Злоумышленник может получить доступ, перезаписав данные или указатель, указывающий на определенный фрагмент кода, который может дать хакеру еще больше возможностей.
Пример переполнения буфера в куче:
Буферу выделяется память кучи с фиксированным размером, но строка может превысить этот размер, что приведет к переполнению.
Пример переполнения буфера на основе стека:
Этот фрагмент кода выделяет буфер размером 64 байта для хранения имени хоста, однако, имя хоста может оказаться больше 64 байт. Если злоумышленник укажет адрес, который преобразуется в очень большое имя хоста, функция может перезаписать конфиденциальные данные или даже передать поток управления злоумышленнику.
[H3] Основы DoS-атак [/H3]
DoS-атака (Denial of Service, отказ в обслуживании) направлена на отключение машины или сети, чтобы сделать устройство недоступным для пользователя. Злоумышленник переполняет устройство жертвы трафиком или отправляет информацию, которая вызывает сбой. Однако, DoS-атаку легко заблокировать и отследить, поскольку в атаке задействовано только одно устройство.
Типы DoS-атак
  • Переполнение буфера. Атаки переполнения буфера являются распространенным типом DoS-атак. Она основана на отправке объема трафика на сетевой ресурс, который превышает пропускную способность системы по умолчанию.
  • Пинг смерти (Ping of Death, ICMP-флуд, Smurf Attack). Хакер отправляет поддельные, увеличенные или вредоносные пакеты, которые «пингуют» каждый компьютер в целевой сети. Цель отвечает и становится наводненной ответами от вредоносного пакета.
По сути, IP4-пакет имеет максимальный размер 65 535 байт. Когда злоумышленник отправляет пакет большего размера, целевая система разбивает его на несколько пакетов меньшего размера и пропускает их. Когда пакеты снова собираются воедино, это вызывает переполнение буфера, что может привести к зависанию или сбою машины.
  • SYN-флуд. Эта атака использует TCP-рукопожатие. В этой атаке злоумышленник отправляет SYN-сообщение. К сожалению, рукопожатие остается незавершенным либо потому, что сервер не подтвердил SYN-сообщение, либо он обратно отправил SYN/ACK-сообщение, а злоумышленник не отправил обратно ACK-сообщение. При этом подключенный хост остается в состоянии «занято» и становится недоступным для приема дальнейших запросов. Хакер будет увеличивать количество запросов, заполняя все открытые порты и не позволяя никому подключаться к сети.
  • Атака фрагментированными пакетами (Teardrop). Фрагменты пакета IP-данных отправляются в целевую сеть. Затем сеть повторно собирает фрагменты в исходный пакет. Процесс повторной сборки фрагментов истощает систему и приводит к ее сбою. В некоторых случаях хакер может даже попытаться найти уязвимость TCP/IP и продолжить атаковать. В конечном итоге сервер не может собрать эти пакеты, что приводит к перегрузке.
[H3] SQL-инъекции (SQL-injection, SQLi) [/H3]
Эта инъекционная атака позволяет выполнять вредоносные инструкции SQL, которые могут управлять сервером базы данных веб-приложения. Злоумышленник может использовать уязвимости SQL-инъекции для обхода защиты приложения. Также хакер может вмешаться в запросы, отправляемые в базу данных, такие как изменение или удаление данных, а также может вызвать постоянные изменения в поведении приложения.
Сканирование на наличие уязвимостей SQLi позволяет убедиться, что доступ к важной информации закрыт, и есть возможность улучшить защиту сервера для смягчения атак. Существует множество различных атак SQL-injection, которые позволяют хакеру: выполнять следующие действия:
  • получить скрытые данные, в которых он может изменить SQL-запрос, чтобы вернуть дополнительные результаты и данные;
  • изменить логику приложения;
  • провести UNION-атаку, при которой можно получить данные из разных таблиц базы данных с помощью селектора UNION SQL;
  • выполнить слепую SQL-инъекцию (Blind SQL-injection), при которой злоумышленник не может напрямую достать данные из приложения, но может различить два разных состояния веб‑приложения в зависимости от условия, которое он определил в SQL-запросе. При слепой SQL-инъекции результат выполнения запроса недоступен злоумышленнику.
[H3] Межсайтовый скриптинг (Cross-Site Scripting, XSS) [/H3]
Межсайтовые сценарии нацелены на пользователей приложений путем вставки JavaScript-кода в выходные данные приложения. Принцип XSS заключается в изменении сценариев веб-приложения таким образом, чтобы они работали так, как хочет злоумышленник.
XSS позволяет хакеру запускать сценарии в браузере жертвы, что позволяет перехватить сеанс пользователя или перенаправить жертву на вредоносный сайт. XSS позволяет неавторизованному злоумышленнику выполнить код в браузере доверенного пользователя и получить доступ к определенным типам данных, а XSS-уязвимость также позволяет перехватить и контролировать данные пользователя. В результате киберпреступник получает контроль над сайтом или приложением. В XSS-атаках веб-приложение является не целью, а инструментом для захвата контроля над данными пользователя.
[H3] Подделка межсайтовых запросов (Cross-Site Request Forgery, CSRF) [/H3]
CSRF-атака обманом заставляет пользователя выполнить определенное действие, которое позволит злоумышленнику получить доступ к устройству через установленный браузер жертвы. Целями атаки являются почтовые клиенты, Facebook, Instagram (соцсети Facebook и Instagram признаны экстремистскими и запрещены в России), а также приложения для онлайн-банкинга.
Для атаки может использоваться cookie-файл сеанса вошедшего в систему пользователя. Этот файл сохраняет учетные данные, чтобы пользователь не вводил их заново.
[H3] Удаленное выполнение кода [/H3]
Уязвимость удаленного выполнения кода (Remote code execution, RCE) позволяет злоумышленнику удаленно выполнить произвольный код на устройстве жертвы. RCE-уязвимость могут привести к различным атакам: от запуска вредоносного ПО до получения хакером полного контроля над скомпрометированной машиной.
RCE-уязвимость может поставить под угрозу приложение и веб-сервер, а также может привести к повышению привилегий, возможности настроить network pivoting и установлению постоянства.
[H3] Заключение [/H3]
Знание основ дает вам лучшее понимание угрозы. Чтобы иметь возможность противостоять атакам и сохранить безопасность системы, нужно знать основную информацию об угрозах - что представляют собой уязвимости и как их можно использовать в атаках.
Понимание основ распространенных уязвимостей и атак необходимо для того, чтобы иметь возможность смягчить угрозу. Организациям следует внедрить регулярное сканирование уязвимостей, чтобы свести к минимуму количество недостатков в веб-приложениях.












 
Сверху Снизу