Методы запросов GET и POST
https://t.me/e7teamВсем привет!
Сегодня мы рассмотрим методы GET и POST запросов в протоколе HTTP.
Введение:
Атаки на WEB - это один из самых ходовых векторов атак. По статистике, в первом квартале 2022 года, количество атак на WEB составило 22 %, что на 9 % больше чем в 4 квартале 2021. Но любая атака на WEB начинается с понимая того как этот WEB работает. Поэтому сегодня мы рассмотрим GET и POST запросы HTTP .

Основное:
Открытие WEB - сайта включает в себя множество скрытых процессов, таких как подготовка HTTP-запроса, идентификация домена, к которому нужно обратиться, перевод доменного имени в IP-адрес, отправка запроса, вывод ответа и прочее.
HTTP (протокол передачи гипертекста) - это протокол прикладного уровня, который осуществляет передачу данных, как в гипертекстовом формате (HTML), так и произвольную передачу данных. Основой HTTP является технология "клиент-сервер"
Клиент - это пользовательский браузер, который инициирует соединение и посылает запрос к серверу.
Сервер - это ресурс, который ожидает соединения и получения запроса, производит необходимые действия и возвращает сообщение с результатом.
Ну и соответственно запросы бывают GET и POST. Данные запросы, можно отправить на сервер с помощью любого программного обеспечения, работающего с протоколом HTTP. Обработка запросов может отличаться в зависимости от типа сервера.
GET - это тип запроса, который извлекает информацию из запрашиваемого ресурса (сервера) и возвращает ее в теле HTTP-сообщения. Это самый простой тип HTTP-запроса, который используется браузером. Сервер получает инструкции, какие данные передавать клиенту. GET запрос ничего не изменяет на сервере, он доступен только для чтения.
Запрос GET передает данные в URL (через ссылку), пользователь может видеть параметры в строке URL. Страница, с методом GET, может быть открыта повторно много раз. Она может быть кэширована браузерами, проиндексирована поисковыми системами, добавлена в закладки и сохранена в логах сервера. Из этого следует, что метод GET самый не безопасный способ передачи данных. Конечно это не значит что от него попросту, можно отказаться. У данного метода есть свои преимущества, например:
1) Не требователен к ресурсам, при обработке данных на сервере
2) Непрерывная связь HTTP
3) единая система кодировки ASCII
Данный метод, следует использовать для получения данных не предполагающих внесений изменений в ресурс, например фильтры в интернет-магазинах и другие безопасные запросы. GET очень прост и позволяет хакеру использовать URL для поиска уязвимых мест в сценариях, а это угрожает межсайтовой подделкой запросов (CSRF) и Open Redirect, так как само посещение URL-адреса или ссылки заставляет браузер отправлять соответствующему серверу GET-запрос. Многие веб-сайты намеренно перенаправляют пользователей на другие страницы, передавая конечный URL-адрес в качестве параметра исходного URL. Приложение использует этот параметр, чтобы заставить браузер послать GET запрос к соответствующей странице, например:

В данном примере, целевой сайт с помощью GET запроса перенаправляет пользователя на свой почтовый домен, используя соответствующий параметр redirect_to и соответствующий URL (рис.1).
А что если хакер поменяет исходный URL-адрес следующим образом (рис.2):

Если www.target-site.com не следит за тем, чтобы адрес в параметре redirect_to принадлежал одному из ее собственных сайтов, хакер может подставить в этот параметр свой URL. В итоге HTTP-ответ может заставить браузер, сделать GET-запрос к www.attack.com, тем самым заманив на вредоносный сайт. Далее хакер может выполнять другие атаки.
POST - это тип запроса, при котором состояние сервера может измениться. Метод POST вызывает удаленную функцию, которая заставляет принимающий сервер выполнить действие: создать комментарий, зарегистрировать пользователя, удалить учетную запись, внести запись в БД и т. д. — либо бездействовать. Также он часто используется для загрузки файла или представления формы для заполнения. Параметры запроса POST могут передаваться в теле запроса.
Метод POST имеет большую степень защиты данных, чем GET. Параметры запроса не видны без использования специального ПО, что дает методу преимущество при пересылке конфиденциальных данных, например в формах авторизации. Поэтому данный тип запроса следует использовать в случаях, когда нужно вносить изменение в ресурс (выполнить авторизацию, отправить форму оформления заказа, форму обратной связи, форму онлайн заявки). Повторный переход по конечной ссылке не вызовет повторную обработку запроса, так как не будет содержать переданных ранее параметров.
К сожалению обычных пользователей (к счастью хакеров), даже POST не дает 100% защиты, например от таких атак как CSRF. Доставка вредоносного кода через запрос POST требует немного больших усилий и взаимодействия с пользователем. Обычно CSRF-атаки через запросы POST осуществляются при помощи форм, поскольку объект <form></form> - один из немногих, позволяющих инициировать запрос POST без использования какого-либо сценария. Также для проведения данной атаки, необходимо применение фишинга и социальной инженерии, для распространения вредоносной формы.
Например, при переходе пользователя по вредоносной ссылке, он попадает на вредоносный сайт, где увидит форму для авторизации. После ее заполнения и отправки произойдет не авторизация на этом сайте, как предполагает пользователь, а запрос в www.target-bank.com(рис.3).

Атрибут hidden во входных данных формы означает, что поля с этими данными отображаться внутри браузера не будут. Чтобы ввести пользователей в заблуждение, в форму можно добавить не вызывающие подозрения поля.
В данном примере пользователь входит в target-bank, хотя при этом он взаимодействует с другим сайтом. А хакер использует состояние его текущего сеанса, для выполнения операций в банке с привилегированным доступом от его имени.
Вывод:
Итак, сегодня мы рассмотрели два основных метода HTTP - запросов, GET и POST, получив краткое представление о работе интернета. Конечно методов запроса, существует большее количество, например: HEAD, PUT, TRACE, CONNECT, OPTIONS и DELETE. О них мы поговорим в других наших статьях. Также мы рассмотрели два простых примера, как с помощью понимания работы данных методов, хакер может осуществить атаки CSRF и Open Redirect.
Внимание! Информация предоставлена строго в ознакомительно-развлекательных целях. Автор данной статьи, а также ресурс на котором размещена статья, не несут ответственности за любые противоправные действия, совершенные после прочтения данной статьи и применения действий описанных в этой статье.