МЕНЮ

Как работает HTTP протокол? Методы ВЗЛОМА для чайниковZip File, мамкины хаЦкеры. В прошлом видео мы рассмотрели общие принципы маршрутизации и протокол DNS. Нынче, мы подробно разберём еще несколько важных технологий Интернета, а именно работу WEB. Это один из сервисов в Интернете, который используется для публикации web-сайтов. Согласно официальному определению, WEB представляет собой распределённую систему. Которая предоставляет доступ к связанным между собой документам, расположенным на различных компьютерах, подключённых к сети Интернет. Для обозначения Всемирной паутины также используют аббревиатуру WWW (World Wide Web). Текущее представление о вебе выглядит примерно следующим образом и для простых обывателей, как правило ограничивается парой тройкой социальных сетей и популярными системами поиска.

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

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

В нашем случае клиентом является браузер, который через определённый путь посылает запросы на Web-сервер, в роли которого может выступать Apache или мелкомягкий IIS.

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

Запомните 4 главных компонента ВЕБ. Браузер, сервер, HTTP-протокол и данные (HTML, CSS, JavaScript и прочие вещи).

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

Однако сегодня, сайтов написанных на чистом HTML почти не осталось. Практически всегда используются два дополнительных элемента. JavaScript – это язык программирования, который позволяет внести интерактивности и динамичности на WEB страницы.

И CSS (Cascading Style Sheets) - задает стили и внешний вид WEB страницы. Пример странички с интегрированным JavaScript вы видите на экране. CSS же стили задаются в отдельном файле, на который потом ставится ссылка в коде страницы.

Сами страницы написанные, как на чистом HTML, так и с использованием Java и CSS я всегда рекомендую вам размещать на мега удобной хостинг платформе SptintHost.

Это годами проверенный хостинг, с отзывчивой техподдержкой и современным аппаратно-программным обеспечением, оборудование которого размещается в двух дата-центрах в Санкт-Петербурге.

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

Универсальная линейка «Плюс», Турбо-битрикс заточенный под одноимённую CMS, ну и конечно же, «Премиум» вариант для действительно серьёзных проектов международного уровня.

Если не разберётесь что, почему и зачем – смело стучите в Саппорт. Специалисты в два счёта помогут оперативно и качественно решить любую проблему.

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

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

Так что если хотите себе домен в стиле МамкинХацкер228.рф или Ru не спешите выкладывать кругленькую сумму левым хостерам. Воспользуйтесь моим фирменным промокодом и получите бесплатную регистрацию.

И кстати, если возьмёте сразу несколько неймов – стоимость продления будет существенно ниже. Если обычно оно обошлось бы для вас в 288 рубасов, то в случае покупки от 5 штук, ценник снизится до 258.

А если нахватите 30 и более – то вообще заберёте за 218. Поэтому не мелочитесь. Выгодное предложение упускать в наше время, сами знаете, непростительно.

Так что не упускайте его и вы. Переходите по ссылочке в описании и выбирайте топовый хостинг для размещения своих сайтов. Денчик рекомендует. Сам юзаю.

HTTP

Прежде чем мы перейдём к теме протокола HTTP, стоит пару слов сказать о таком понятии, как URL. Uniform Resource Locator. Это то из чего состоит любой адрес в сети.

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

Тут думаю Америку для вас не открыл, но на всякий случай вспомнить следовало. Теперь давайте вернёмся к нашим баранам. Протокол HTTP работает на прикладном уровне.

Первая официальная версия протокола была выпущена в 1996 году. На сегодняшний день наиболее популярной является HTTP 2. Среди её ключевых особенностей: мультиплексирование запросов, расстановка приоритетов для запросов, сжатие заголовков, загрузка нескольких элементов параллельно посредством одного TCP-соединения, а также поддержка проактивных push-уведомлений со стороны сервера.

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

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

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

Структура типового запроса достаточно проста. Клиент указывает URL, браузер посылает по этому URLу запрос (например GET). Этот запрос прописывает метод и хост говорит куда посылаем и на какой порт.

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

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

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

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

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

Далее видно что сервер закрывает соединение. Указан тип возвращаемого документа. Ну а затем уже следует непосредственно само тело HTML документа с картинками, заголовками, текстом и прочими прелестями.

HTTP2

Как вы помните, HTTP2 был стандартизирован в 2015 году. Он описан в открытом стандарте - RFC 7540 и в качестве его основы послужил Google SPDY.

Упомянутая спецификация содержит так называемый “черный список” шифров и требования TLS1.1, 1.2, 1.3. Ну минимально должна быть хотя бы 1.2.

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

Основные функция HTTP 2 – это транспортная обёртка для HTTP 1х версий, бинарный формат, мультиплексирование, сжатие заголовков, приоритезация, ну и само-собою симметрия.

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

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

В частности, если все объекты находятся в разных местах и нужно загрузить не 3 элемента, как в примере, а 50, то с HTTP 1 версии это всё будет долго и даже есть вероятность отказа в виду ограничений по количеству портов в TCP.

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

А сервер читает инфу по принципу нет-нет-нет-есть-нет-нет-нет-есть. Это относительно новая система, т.к. раньше заголовки никак не сжимались.

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

HTTPS

Основная задача HTTPS заключается в том, чтобы обеспечить безопасность данных, передаваемых между браузером и web-сервером. На практике, эта самая безопасность обеспечивается следующими вещами.

Протоколом TLS (SSL), который реализует шифрование, аутентификацию и целостность передаваемой информации.

А также механизмом, благодаря которому перед установлением соединения происходит “обмен ключами” (публичным и частным). Так называемый TLS Handshake

Если смотрели мой ролик про Wireshark в котором я демонстрировал, как перехватывать пакетосы, то там я в подробностях объяснял, в чём заключается нюанс перехвата трафика HTTPs.

Основные моменты истории становления данного протокола вы сейчас видите на экране. Первая версия SSL была выпущена в 1995 году. На сегодняшний день уже применяется TLS 1.3, который считается наиболее защищённым

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

56 милисекунд – на хендшейк TCP. 112 на TLS. Таким незамысловатым способом проходя все этапы происходит обмен секретной информацией для обеспечения защищённого канала.

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

Фактически, цифровой сертификат - это уникальный идентификатор хоста или пользователя, чья достоверность подтверждается корневым и доверенным центром сертификации (CA).

Цифровой сертификат содержит в себе открытый ключ и различные поля (имя, IP адрес, серийный номер, ссылку на лист отзыва и т.д.). В принципе, Вы в любом браузере можно посмотреть сертификат WEB-сайта.

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

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

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

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

Существует 2 механизма проверки отозванных сертификатов. CRL и OCSP. Первый это простая публикация в интернете списка серийных номеров отозванных сертификатов.

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

Да, в большинстве случаев доверенный цифровой сертификат необходимо покупать, но есть и вариант для халявщиков. Let’s Encrypt. Если не забуду – закреплю ссылочку в описании.

HTTP и информационная безопасность

Ну и теперь ваша любимая часть. Атаки, которые совершаются с использованием уязвимостей в протоколе HTTP. Например, в 2014 году в TLS (библиотеке OpenSSL) была обнаружена уязвимость HeartBleed.

Она позволяла злоумышленникам получить несанкционированный доступ к данным web-сервера. Или MitM. Тип атаки, когда киберпреступник пытается незаметно разместить себя между клиентом и сервером с целью перехвата, подмены или вообще удаления передаваемых данных.

Очень широкое распространение HTTP протокола приводит к крайне высокому интересу киберпреступников. HTTPs в целом обеспечивает защиту данных, но злоумышленники могут использовать и другие слабые места протокола.

Например реализации определенного WEB приложения или ошибки конфигурации. Тут стоит детально остановиться на 3 моментах. Сравнении методов GET и POST, сохранении пользовательской сессии и Cookies.

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

GET - передает все параметры в URL. POST - передает все параметры в теле сообщен. И злоумышленник может либо перехватить такой GET запрос, либо получить доступ к лог-файлам сервера.

Механизм кукис позволяет серверу “запоминать” сессию пользователя и не запрашивать логин-пароль при переходе на новую страницу. Браузер добавляет токен от куки к каждому запросу, но если его перехватить, то злоумышленник будет выглядеть для сервера как пользователь.

Ну и чтобы у вас совсем взорвался мозг, вот вам напоследок 3-х уровневая модель web-приложения. Тут у нас и доступ к интерфейсам управления – она же админка для управления сайтом.

И аутентификация с контролем данных - для интернет банков, магазинов. И проверка ввода пользователя при запросе доступа к файлам на сервере. До кучи ещё дополнительная проверка параметров (validation) с управлением сессиями. Короче полный фаршмак.

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

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

Так что прямо сейчас клацни на колокольчик и оформи подписку, если по каким то причинам ещё не сделал этого ранее. Иначе пропустишь крутую видяшку и она не появится в твоей ленте.

А это, сам понимаешь, печаль беда. Если тебе интересно получать больше инфы от Денчика в виде заумных мыслей, то подпишись на телегу. Там я на регулярной основе строчу какую-то дичь.

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

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

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

telegram chanel

Хочешь больше контента? Подписывайся на YouTube-канал!

Курс «Диплом за неделю»

Пособие «Библия вардрайвинга»

Курс Cisco «CCNA: Introduction to Networks»

© 2024. IT-спец. Денис Курец.