[Web Application Pentesting] Знакомство с протоколом HTTP

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
715
3 094
BIT
0
web-application-penetration-testing-banner.png

Всем привет колеги. Как и обещал начинаю цикл статей посвященных пентесту веб приложений по мотивам курса Web Application Pentesting от
Это не означает что я совсем дословно буду переводить его курс,а означает что я буду ссылаться на него как основу материала,но и забегать далеко за программу курса также не буду. Ну что же, поехали)
В этой статье для демонстрации работы протокола http нам понадобится:



Все эти инструменты есть по умолчанию в . Я бы рекомендовал использовать этот дистрибутив в рамках этого курса.

Начнем мы с самых самых основ.
И так что же такое протокол ?
Как он ?
И как ?
Давайте поглядим на следующий слайд:
1.PNG


Ну в первую очередь что нам нужно понимать,это то что HTTP - это протокол для передачи данных в виде который работает по принципу запроса-ответа от веб сервера . То есть простыми словами - (смотрим картинку на слайде) мы ,используя программу которая понимает и преобразовывает гипертекст (браузер в нашем случае) передаем (запрос) информацию в виде html-тегов (исходный html код страницы) на веб сервер, где эта информация обрабатывается (там в случаи необходимости ходит к Базе Данных за какими то данными ) и возвращается в виде ответа программе браузеру который ее снова преобразовывает в приемлемый для юзера вид (картинки,медиа,и т.д)
А идентификация ресурсов происходит с помощью /
Надеюсь тут более менее понятно,если будут трудности -читаем (там все реально очень доступно расписанно ) Ну а если совсем совсем трудно будет,задавайте вопросы в комментариях - попытаюсь ответить )
Давайте попробуем посмотреть на примере как работает протокол HTTP.
Хочу заметить что передавать http запросы на сервер умеет не только веб браузеры,а так же и много других программ ,в том числе и консольные утилиты такие как curl,netcat
Именно их я буду использовать для демонстрации работы протокола http.
Давайте посмотрим как выглядит http запрос на веб сервер.
Для этого запустим wireshark на интерфейсе который используем для выхода в интернет(в моем случае это eth1 "У вас же может быть eth0 или wlan0".
1.PNG


После запуска анализатора трафика WireShark ,давайте передадим запрос на сайт :
curl -v
параметром -v я указал что мне нужен более подробный вывод
Как видим - curl нам сразу же говорит что когда мы обратились по URL( ) мы подключились на веб сервер с айпи адресом 173.194.73.121 на 80 порт.
И мы передали на сервер наш HTTP запрос в виде 4 строчек:
Код:
> GET / HTTP/1.1
> Host: www.securitytube.net
> User-Agent: curl/7.50.1
> Accept: */*
На что сервер нам ответил следующими заголовками :

Код:
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Cache-Control: no-cache
< X-Cloud-Trace-Context: 81b2e66a998ecbfd10d4fad489def794
< Date: Sun, 18 Dec 2016 19:52:45 GMT
< Server: Google Frontend
< Content-Length: 31913
<
От себя добавлю , что изучение очень немаловажный этап - так как тут также встречаются всякого рода инъекции и другие уязвимости.
В заголовках ответа видим что первым идет 200 ОК (Означает успешное подключение)
Ну а после заголовков видим наш код (гипертекст) который после обработки браузером превращается в приемлемый контент)
Снимок.PNG


Теперь давайте вернемся в WireShark и посмотрим что же произошло.
Первым мы видим трафике обращение (запрос) по протоколу
И ответ сервера(Обращаясь по DNS имени сервер нам ответил и предоставил IP адрес который принадлежит этому днс имени)
Далее идет три пакета TCP трафика,устанавливается соединение с веб сервером
И только потом на посылается GET запросGET|POST|HEAD запросах мы поговорим в следующей статье,так что не переживайте )по протоколу HTTP
2.PNG

Кликнув по нашему пакету с GET запросом в WireShark
В среднем окне мы можем видеть полностью сегментацию нашего пакета,от канального до прикладного уровня:
Раскрыл Hyper Transport Protocol (HTTP ) мы можем полностью увидеть наш запрос который мы видели при обращении на сервер с помощью утилиты curl :

3.PNG

Что касается заголовком которые мы передаем на сервер,думаю что здесь все понятно:
HOST - это днс имя сайта к которому обращаемся
4.PNG

UserAgent - ПО и версия через которую передавался запрос на сервер(Если бы был браузер было что то типа "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" )
5.PNG

Accept:
6.PNG


Что ж вернемся в WireShark и посмотрим там ответ сервера:
8.PNG

Видим тот же ответ что и получили через curl
Заголовок Server: Google Frontend потому что Вивек используюет гугл апи на своем сайте ))
Ну и ниже видим html контент ответа сервера)

Ну вообщем это пока все для этой статьи ребята) В следующей статьи мы поговорим с вами о GET,POST и HEAD запросах ,а также научимся вручную передавать на сервер запросы с использованием NetCat)
До новых встреч)
Если понравилась статья - жмакни лайк)
Как дополнение к статье - рекомендую посмотреть курс про WireShark от Udemy который я запостил здесь на форуме)
Всем спасибо)
 

Вложения

Последнее редактирование:
Статья гуд для новичков. В плане хека от себя добавлю что у версии Apache ниже 1.3 была уязвимость, что заливался шелл методом PUT <имя файла> . Что является классическим примером использования уязвимостей чисто протокола без каких либо дополнительных дырок. И примеров когда ломается чисто протоколом не мало. Может быть я бы автору порекомендовал бы на каждый такой материал парочку профитов от себя подкинуть. Думаю у тебя их не мало ;)
 
  • Нравится
Реакции: <~DarkNode~>
Статья гуд для новичков. В плане хека от себя добавлю что у версии Apache ниже 1.3 была уязвимость, что заливался шелл методом PUT <имя файла> . Что является классическим примером использования уязвимостей чисто протокола без каких либо дополнительных дырок. И примеров когда ломается чисто протоколом не мало. Может быть я бы автору порекомендовал бы на каждый такой материал парочку профитов от себя подкинуть. Думаю у тебя их не мало ;)
Да ты прав,можно вспомнить и как обходится http basic auth аутентификация по средством передачи не существующих методов и многое другое.Но имхо не буду сильно много информации давать,все будет,и будет постепенно.
Профиты будут) Но пока информация примерно в рамках программы курса) От себя буду добавлять по немножку, а то можно таким образом уйти далеко от программы)
 
  • Нравится
Реакции: ghostphisher
Да ты прав,можно вспомнить и как обходится http basic auth аутентификация по средством передачи не существующих методов и многое другое.Но имхо не буду сильно много информации давать,все будет,и будет постепенно.
Профиты будут) Но пока информация примерно в рамках программы курса) От себя буду добавлять по немножку, а то можно таким образом уйти далеко от программы)
Как скажешь, тебе виднее.
 
  • Нравится
Реакции: uz3r0x7e0
Спасибо за курс! А ссылочку на "курс про WireShark от Udemy" можно обновить?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!