2.2. Клиентские и серверные веб-атаки

Веб-атаки пестрят своим разнообразием, однако все их можно разделить на 2 условные категории: клиентские и серверные. Давайте разберем, что они из себя представляют и почему так называются.

Клиентские атаки направлены против самого пользователя и выполняются в основном в его браузере, но также и на сервере. Типичным примером клиентских атак является XSS (Cross Site Scripting). В основе данной атаки лежит выполнение вредоносного кода JavaScript в браузере пользователя. Однако это не означает, что у пользователя старый или уязвимый браузер, который сделал возможным факт атаки. Причиной уязвимости является само веб-приложение, которое не фильтрует поступающие от пользователя данные. О XSS мы поговорим более подробно в одном из следующих разделах.

К клиентским атакам относят:

  • Cross Site Scripting (XSS)
  • Cross Site Request Forgery (CSRF) – основа данной атаки в том, если вы открыли вредоносный сайт, то он сможет без вашего согласия войти на определенный сайт, в который вы уже вошли, и совершить некоторые действия от вашего имени. Например, у вас открыта вкладка с интернет-банкингом, а в соседней вкладке у вас сайт хакера. При определенных условиях хакер может получить доступ к вашему интернет-банкингу или совершить какую-нибудь операцию от вашего имени. Однако данный тип атаки практически сошел на нет в последнее время и реализовать ее становится все сложнее и сложнее.
  • Clickjacking – это тип атаки на веб-приложения, при которой злоумышленник манипулирует пользовательским интерфейсом, чтобы скрыть или замаскировать элементы интерфейса и заставить пользователя случайно нажимать на невидимые или скрытые элементы страницы. Самой простой и распространенной целью атаки является перенаправление пользователя на другой сайт.
  • Различные атаки против плагинов и браузерных расширений
  • Уязвимости в политиках Same Origin Policy (SOP) и Cross Origin Resource Sharing (CORS)
  • Уязвимости в Document Object Model (DOM). DOM – это программный интерфейс браузера, который позволяет программистам манипулировать содержимым веб-страницы, используя языки программирования, такие как JavaScript. При определенных условиях хакер может полностью изменить отображаемую страницу либо контролировать введенные пользователем данные и многое другое.
  • Уязвимые Frontend библиотеки (jQuery, Angular и так далее) могут содержать функции, которые могут быть использованы против самого пользователя. Кроме того, достаточно часто сам код находится на удаленных серверах CDN (Content Distribution Network – распределенная сеть для доставки контента). CDN серверы могут быть взломаны, а вместо полезного контента, вроде JavaScript библиотек и скриптов, злоумышленник может вставить вредоносный код, который будет успешно выполнен в браузере жертвы, так как браузер доверяет CDN.
  • Фишинговые атаки относят к социальной инженерии. В большинстве случаев злоумышленники используют клонированные сайты, чтобы побудить своих жертв предоставить им пароли и номера банковских карт.

Серверные атаки направлены против сервера и других его компонентов. В данной категории существует довольно большое количество атак и методик. Некоторые из них представлены ниже:

  • OS Command Injection – принцип в том, что на сервер отправляются команды операционной системы (Linux/Windows). Если приложение уязвимо, то команды будут успешно выполнены.
  • Code Injection – данная уязвимость немногим похожа на предыдущую уязвимость, однако в данном случае хакер отправляет вредоносный код на языке, на котором написано само приложение. Например, сайт создан на языке PHP, злоумышленник нашел брешь в системе и отправил код, написанный тоже на PHP.
  • SQL Injection (SQLi) – данный тип атаки направлен на базы данных. Как известно, базы данных содержат довольно много конфиденциальных данных. Если хакеру удастся внедрить свой SQL запрос, то он сможет получить все данные из БД и даже выполнить системные команды.
  • Server-Side Request Forgery (SSRF) - это тип атаки на веб-приложения, при которой злоумышленник отправляет поддельные запросы от имени уязвимого сервера, чтобы получить несанкционированный доступ к защищенным ресурсам, расположенным внутри сети организации. Например, злоумышленник может отправить запрос на удаленный сервер, используя уязвимый веб-сервер в качестве прокси-сервера. Запрос может быть сформирован таким образом, чтобы вызвать ошибку, которая позволит злоумышленнику увидеть конфиденциальные данные или получить доступ к системе.
  • XML Entity Injection (XXE) – данный тип атаки использует XML файлы и уязвимости XML парсеров на сервере для чтения файлов и выполнения системных команд.
  • Directory Traversal – с помощью данной атаки злоумышленник может получить доступ практически ко всем файлам на сервере за пределами корневого каталога веб-приложения. Например, на сервере файлы каждого веб-приложения хранятся в определенном каталоге, которое является корневым для данного приложения. С помощью Directory Traversal можно выйти за пределы своего корневого каталога и войти в каталоги других приложений или даже к системным файлам. По сути, эта уязвимость создается неправильной настройкой веб-сервера.

Это далеко не весь список. Некоторые атаки довольно экзотические и редко используется. Другие же напротив, используются очень часто и даже возглавляют некоторые рейтинги и тренды. Поэтому нет необходимости изучать абсолютно все методики и техники, а лишь те, что в тренде.

В данном курсе я постараюсь описать самые популярные атаки и дать к ним практические упражнения для лучшего понимания.