Web14: Проблемы безопасности в протоколе HTTP

Web14: Проблемы безопасности в протоколе HTTP

В этой статье представлены некоторые проблемы безопасности протокола HTTP , поднятые в двух документах RFC 7230 и RFC 7231. Примеры в статье о конкретных ошибках взяты из OWASP.

1. Риски от промежуточных факторов

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

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

Разработчики и разработчики систем должны учитывать факторы конфиденциальности и безопасности в процессе проектирования, кодирования и развертывания системы.

Пользователи должны знать об опасностях использования ненадежных прокси или шлюзов.

2. Разделение ответов

Разделение ответов (также известное как внедрение CRLF) — популярный метод веб-эксплойтов. Злоумышленник отправляет закодированные данные в некоторых параметрах запроса, которые затем декодируются и повторяются в определенном поле заголовка ответа.

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

3. Запрос на контрабанду

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

Давайте рассмотрим следующий пример:

Предположим, запрос POST содержит в заголовке два поля «Content-length» с двумя разными значениями. Некоторые серверы отклонят этот запрос (IIS и Apache), а другие — нет. Например, SunONE W/S 6.1 сначала использует поле Content-length, а sunONE Proxy 3.6 — во вторую.

Предполагая, что SITE является DNS SunONE W/S, расположенным за прокси-сервером SunONE, на SunONE W/S находится файл яда.html. Вот как можно использовать подсказку HTTP-запроса на основе несогласованности обработки между двумя серверами:

Web14: Проблемы безопасности в протоколе HTTP

[Обратите внимание, что каждая строка заканчивается CRLF («»), кроме строки 10]

Давайте рассмотрим, что происходит, когда запрос отправляется на W/S через прокси-сервер. Сначала прокси проанализирует запрос из строк с 1 по 7 (синий) и обнаружит два поля Content-Length. Как упоминалось выше, он проигнорирует первое поле и поймет, что длина тела запроса составляет 44 байта. Поэтому он рассматривает данные из строк 8–10 как тело первого запроса (в строках 8–10 данные имеют длину ровно 44 байта). Затем прокси-сервер проанализирует строки с 11 по 14 (красные) как второй запрос клиента.

Теперь давайте посмотрим, как W/S интерпретирует приведенные выше данные, пересылаемые с прокси. В отличие от прокси, W/S будет использовать первое поле Content-Length и интерпретировать его следующим образом: первый запрос не имеет тела, а второй запрос начинается со строки 8 (обратите внимание, что W/S будет анализировать, начиная со строки 11, как значение месторождения Бла).

Далее давайте посмотрим, как ответ возвращается клиенту. Запрос, который понимает W/S, — это «POST/foobar.html» (из строки 1) и «GET /poison.html» (из строки 8), поэтому он отправит клиенту 2 ответа с содержимым страницы foobar. html и яд.html. Прокси понимает, что эти 2 ответа соответствуют 2 запросам: «POST/foobar.html» (из строки 1) и «GET /page_to_poison.html» (строка 11). Прокси-сервер будет кэшировать содержимое страницы Poison.html, соответствующее URL-адресу «page_to_poison.html» (отравление кэша). Оттуда, когда клиент запрашивает «page_to_poison.html», он получит содержимое страницы Poison.html.

4. Атака по пути к файлу

Веб-серверы часто используют свою локальную файловую систему для управления сопоставлением имен файлов в URI с реальными ресурсами на сервере. Большинство файловых систем не предназначены для защиты от вредоносных путей к файлам. Поэтому серверу необходимо избегать доступа к важным системным файлам.

Например, UNIX, Microsoft Windows и некоторые другие операционные системы используют «..» в качестве элемента пути для обозначения каталога на один уровень выше текущего файла/каталога. Без надлежащего контроля ввода и авторизации доступ к конфиденциальным файлам/папкам системы можно получить путем ввода путей, указывающих на эти файлы/папки.

5. Типы атак: внедрение команд, внедрение кода, внедрение запроса.

[Веб-серверы часто используют параметры в URI в качестве входных данных для выполнения системных команд и запросов к базе данных. Однако данным, полученным в запросе, не всегда можно доверять. Злоумышленник может создавать и изменять компоненты запроса (например, методы, поля в заголовке, теле...), выполнять системные команды, запрашивать базу данных...

Например, SQL-инъекция — это распространенная атака, при которой веб-сервер получает параметры в URI, которые являются частью SQL-запроса. Таким образом, злоумышленник может обманом заставить веб-сервер выполнить незаконные SQL-запросы, чтобы украсть или саботировать базу данных.
Как правило, данные, предоставленные пользователями, не должны использоваться непосредственно для выполнения операций на сервере. Эти данные должны пройти через фильтры, которые определяют, что действительно, а что нет, тем самым удаляя ненужные данные.

6. Раскрытие личной информации

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

7. Раскрытие конфиденциальной информации в URI

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

Избегайте использования метода GET для отправки личной информации на сервер, поскольку она будет отображаться в URI. Вместо этого используйте метод POST.

8. Раскрытие информации об используемом программном обеспечении

Поля User-Agent, Via, Server в заголовке обычно предоставляют информацию о программном обеспечении, используемом отправителем. Теоретически это позволяет злоумышленникам легче использовать известные уязвимости в этом программном обеспечении.


Узнайте о функции «Завершить задачу» в Windows.

Узнайте о функции «Завершить задачу» в Windows.

Завершить задачу — это функция диспетчера задач Microsoft Windows. Он расположен на вкладке «Приложения» и позволяет пользователям закрывать любую отвечающую или не отвечающую программу.

Windows + V: полезный ярлык, о котором многие пользователи Windows не знают.

Windows + V: полезный ярлык, о котором многие пользователи Windows не знают.

Как и на многих других платформах, в Windows также имеется специализированный менеджер буфера обмена, который называется «История буфера обмена».

Как установить виджет macOS Big Sur/iOS 14 на Windows 10

Как установить виджет macOS Big Sur/iOS 14 на Windows 10

Версия Big Sur для macOS была официально анонсирована на недавней конференции WWDC. И вы можете полностью перенести интерфейс macOS Big Sur на Windows 10 с помощью инструмента Rainmeter.

Как защитить удаленный рабочий стол от вредоносного ПО RDStealer

Как защитить удаленный рабочий стол от вредоносного ПО RDStealer

RDStealer — это вредоносное ПО, которое пытается украсть учетные данные и данные путем заражения RDP-сервера и мониторинга его удаленных подключений.

7 лучших программ для управления файлами для Windows, которые заменят Проводник

7 лучших программ для управления файлами для Windows, которые заменят Проводник

Может быть, пришло время попрощаться с Проводником и использовать стороннее программное обеспечение для управления файлами? Вот 7 лучших альтернатив Windows File Explorer.

Как работает LoRaWAN? Почему это важно для Интернета вещей?

Как работает LoRaWAN? Почему это важно для Интернета вещей?

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

8 способов открыть дополнительные параметры запуска в Windows 10

8 способов открыть дополнительные параметры запуска в Windows 10

Перейдя к «Дополнительным параметрам запуска», вы можете сбросить Windows 10, восстановить Windows 10, восстановить Windows 10 из файла образа, который вы создали ранее, исправить ошибки запуска, открыть командную строку для выполнения параметров, выбрать другие, открыть настройки UEFI, изменить настройки запуска. ..

Почему стоит хорошо подумать, прежде чем войти в систему через аккаунт социальной сети?

Почему стоит хорошо подумать, прежде чем войти в систему через аккаунт социальной сети?

Каждый раз, когда вы подписываетесь на новую услугу, вы можете выбрать имя пользователя и пароль или просто войти в систему через Facebook или Twitter. Но стоит ли вам это делать?

Инструкция по смене Google DNS 8.8.8.8 и 8.8.4.4

Инструкция по смене Google DNS 8.8.8.8 и 8.8.4.4

DNS Google 8.8.8.8 8.8.4.4 — это один из DNS, который предпочитают использовать многие пользователи, особенно для ускорения доступа к сети или доступа к заблокированному Facebook.

Как всегда запускать Microsoft Edge в режиме InPrivate в Windows 10

Как всегда запускать Microsoft Edge в режиме InPrivate в Windows 10

Если вы используете Microsoft Edge на общем компьютере с Windows 10 и хотите сохранить конфиденциальность своей истории просмотров, вы можете настроить Edge всегда запускать в режиме InPrivate.