March 25, 2020

Хакинг. Как начать?



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




Первое что предстоит сделать :

1) https://tgraph.io/Terminologiya-02-08-2 - прочесть эту статью.
2) https://teletype.in/@genesischannel/uW1y87qks - прочесть эту статью.

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




Ниже представлена сетевая модель OSI. Типы запросов и к чему они относятся.

Прочитать подробнее - https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_OSI




Методы запросов

Метод HTTP

Последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. Обычно метод представляет собой короткое английское слово, записанное заглавными буквами. Обратите внимание, что название метода чувствительно к регистру. Сервер может использовать любые методы, не существует обязательных методов для сервера или клиента. Если сервер не распознал указанный клиентом метод, то он должен вернуть статус501 (Not Implemented). Если серверу метод известен, но он неприменим к конкретному ресурсу, то возвращается сообщение с кодом 405 (Method Not Allowed). В обоих случаях серверу следует включить в сообщение ответа заголовок Allow со списком поддерживаемых методов. Кроме методов GET и HEAD, часто применяется метод POST.

OPTIONS - используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. В ответ серверу следует включить заголовок Allow со списком поддерживаемых методов. Также в заголовке ответа может включаться информация о поддерживаемых расширениях. Предполагается, что запрос клиента может содержать тело сообщения для указания интересующих его сведений. Формат тела и порядок работы с ним в настоящий момент не определён; сервер пока должен его игнорировать. Аналогичная ситуация и с телом в ответе сервера.



Для того, чтобы узнать возможности всего сервера, клиент должен указать в URI звёздочку—«*». Запросы «OPTIONS * HTTP/1.1» могут также применяться для проверки работоспособности сервера (аналогично ping) и тестирования на предмет поддержки сервером протокола HTTP версии 1.1. Результат выполнения этого метода не кэшируется.

GET - используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса. Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»:



GET /path/resource?param1=value1&param2=value2 HTTP/1.1



Согласно стандарту HTTP, запросы типа GET считаются идемпотентными
Кроме обычного метода GET, различают ещё: Условный GET —содержит заголовкиIf Modified- Since, If - Match, If - Range и подобные; Частичный GET — содержит в запросе Range. Порядок выполнения подобных запросов определён стандартами отдельно.

HEAD - аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения. Заголовки ответа могут кэшироваться. При несовпадении метаданных ресурса с соответствующей информацией в кэше — копия ресурса помечается как устаревшая.

POST - применяется для передачи пользовательских данных заданному ресурсу. При этом передаваемые данные включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер. В отличие от метода GET, метод POST не считается идемпотентным, то есть многократное повторение одних и тех же запросов POST может возвращать разные результаты.При результате выполнения 200 (Ok) в тело ответа следует включить сообщение об итоге выполнения запроса. Если был создан ресурс, то серверу следует вернуть ответ 201 (Created) с указанием URI нового ресурса в заголовке Location.

PUT - применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существует ресурс, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content). Сервер не должен игнорировать некорректные заголовки Content -*, передаваемые клиентом вместе с сообщением. Если какой - то из этих заголовков не может быть распознан или не допустим при текущих условиях, то необходимо вернуть код ошибки 501 (Not Implemented). Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу.





Заголовки HTTP

Заголовки HTTP (Headers — это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя - значение. Формат заголовков соответствует общему формату заголовков текстовых сетевых сообщений ARPA. Заголовки должны отделяться от тела сообщения хотя бы одной пустой строкой. Эта часть HTTP протокола одна из самых интересных для пентестера, так как большинство манипуляций происходит именно с хидерами. Все заголовки разделяются на четыре основных группы:

General Headers (рус.Общие заголовки) — используются в запросах и ответах. Request Headers (рус. Заголовки запроса) — используются только в запросах. Response Headers (рус. Заголовки ответа) — используются только в ответах. Entity Headers (рус. Заголовки сущности) — сопровождают каждую сущность сообщения. Используются в запросах и ответах. Полный список, вы можете найти в интернете, здесь же выбраны самые главные.