• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
2 990
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Привет колеги.
Добро пожаловать на курс Web Application Pentesting.
В этой статье мы с вами научимся:
  • Вручную посылать запросы на веб сервер через консольную утилиту NetCat (как альтернативу можно так же использовать telnet клиент)
  • Так же познакомимся с методами HTTP запросов
  • Научимся перечислять доступные методы HTTP запросов через:
    • метод OPTIONS
    • скрипт Nmap
    • Metasploit Framerok
  • Немного познакмимся с вектором HTTP Verb Tampering, небольшой профит от автора)
И так мы рассмотрим способы создания запросов с нуля, руками, в консоли. Зачем? Порой попадая на какуе то удаленную машину где доступно только консольное окружения может возникнут необходимость проверить какой то внутренний сайт,который к примеру может быть доступен только с удаленной машины или на локалхосте.Вторая причина почему нам это нужно - мы не раз будем сталкиватся с модификацией запросов на веб сервер через прокси утилиты(Burp Suite или Owasp ZaP к примеру) где будет необходимо понимания отправки запросов на сервер.

И так для примера создания запроса воспользуемся консольной утилитой NetCat.
Вспомним из моей прошлой статьи
что curl посылал на сервер 4 строки,на для ознакомление понадобятся первые 2 :
Код:
> GET / HTTP/1.1
> Host: www.securitytube.net
И так , сперва установим соединение с сайтом на 80 порту командой:
Код:
nc www.securitytube.net 80
Затем передадим наши две строчки и нажмем два раза Enter:
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]


После чего видим что сервер нам отвечает заголовками ,за которыми идет html контент.
От себя добавлю что для удобства в линуксе можно использовать перенаправления STDOUT одной команды на STDIN другой команды,простыми словами что бы каждый раз не вводить вручную наши две строчки мы можем выполнить следующую команду:
Код:
cat hosts.txt | nc www.securitytube.net 80
Где hosts.txt - это подготовленный файл с нашими строчками запроса.
Вывод содержимого этого файла мы передали в качестве ввода для команды nc 80
И таким образом получили тот же результат)
Подбробнее о перенаправление ввода вывода команд при создании http запросов вручную так же можно посмотреть
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]


Думаю что с этими двумя строчками понятно все из прошлой статьи:
GET / HTTP/1.1 -- обратится к домашней странице по протоколу HTTP/1.1
Host: - днс имя хоста.

Что бы обратится не на домашнюю страницу используется запрос вида:
Код:
GET /путь_к_локальному_ресурсу HTTP/1.1
Host:Имя_Хоста

Вот для примера обратимся по какому то несуществещому ресурсу:


Код:
GET /codeby.txt
Host:www.securitytube.net
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]


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

Как вы уже смогли догадатся что запрос в примере выше передавался через метод GET.
Но так же существует и ряд других методов,и некоторые из них представляют опасность если их не правильно использовать.

Давайте глянем на слайд
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]



  • HEAD - этот метод позволяет в качестве ответа получить только заголовки ответа сервера .
  • GET - все параметры передаються в URL.
  • POST - данные передаются через сабмит веб форм,заполненние текстовых полей и т.д
  • PUT - этот метод позволяет клиентам загружать новые файлы на веб-сервер.
  • DELETE - этот метод позволяет клиентам удалять файлы, хранящиеся на веб-сервере.
  • TRACE - этот метод возвращает в ответе клиенту строку, которая была ему послана и используется в большинстве случаев для отладки. Но также этот метод может быть использован для проведения атаки Cross Site Tracing (XST).
  • OPTIONS - вернет перечень доступных методов.
  • CONNECT - этот метод может позволить клиентам использовать веб-сервер в качестве прокси-сервера.

Методы GET и POST пожалуй самые популярные методы для взаимодействия с веб-сервером.
Итак, мы с Вами научились посылать вручную запросы на сервер и знаем какие моды HTTP существуют.Теперь появляется новый вопрос:
Как узнать какие методы поддерживаются на веб сервере?
Для это воспользуемся консольной утилитой curl и запустим ее с параметром -X (параметр -X отвечает за передаваемый метод HTTP запроса),и в качестве метода воспользуемся методом OPTIONS,который по идеи должен перечислить нам возможные методы:
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Как видим метод OPTIONS на этом сайте не поддерживается :(
Давайте для демонстрации возмем сайт где этот метод поддерживается:
Возмем сайт вивека:
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Как видим 200 ОК значит что все гуд ,и заголовок Allow перечислил нам возможные методы :)
Так же этого результата можно добится через использования http-methods скрипта в Nmap:
Код:
nmap -p 80 --script http-methods vivekramachandran.com
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

И Metasploit Framework имеет в себе также такую возможность:
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]


Теперь небольшой профит для закрепление знаний:
Вооружившись знаниями (Их теперь более чем достаточно) читаем про вектор
Идем решать таск на )))
Видим что нас там встречает HTTP Basic Auth:
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Так же давайте в попробуем обратится на вебсервер через curl:
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Видим 401 статус код ответа,который отвечает за необходимость авторизоватся на сервере.
Давайте попробуем перечислить методы через OPTIONS:

[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Хех) Видим что он нам ответил 200 Ок,
А ниже можем видеть контент где находися флаг для валидации таска)
Давайте выполним аналогичные действие через NetCat для закрепление,в качестве метода укажим какой то несуществующий,например CODEBY метод:

Код:
CODEBY /web-serveur/ch8/ HTTP/1.1
Host: challenge01.root-me.org
[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]

Как видим снова 200 ОК и контент с паролем)


В следущей статье мы поближе познакомимся с HTTP Basiс Аутентификацией)
Если понравилась статья - жмакни лайк)

До новых встреч) Спасибо за внимания)
 

Вложения

Последнее редактирование:
A

a113

Большое спасибо за статьи. Материал оправдывает дни ожиданий :)
 
  • Нравится
Реакции: <~DarkNode~>
SooLFaa

SooLFaa

Администратор
15.07.2016
814
1 318
Профитики. Умничка, Бро. Профитики есть хорошо.
 
  • Нравится
Реакции: <~DarkNode~>
ghostphisher

ghostphisher

гарант codeby
Gold Team
07.12.2016
2 515
3 353
Отличная статья, добротно все разложено! Очень здорово - nmap, msf попали в нее!
 
  • Нравится
Реакции: Dosia и <~DarkNode~>
Dosia

Dosia

Well-known member
08.12.2016
96
27
Когда использую curl ( -v -X OPTIONS URL) Показывает уйма html кода, а так-же ничего связанного с allow нету... Даже не вылазит про то,что метод OPTIONS не поддерживается
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
2 990
Когда использую curl ( -v -X OPTIONS URL) Показывает уйма html кода, а так-же ничего связанного с allow нету... Даже не вылазит про то,что метод OPTIONS не поддерживается
Ну я демонстрировал что перечисление через метод OPTIONS не всегда работает...
Если конкретно про уязвимость HTTP Verb Tampering - то совсем не обязательно что бы было перечисление через OPTIONS, в примере с рутми там просто лимит на методы GET и POST .И используя любой другой метод мы обходим идентификацию на сервере,в этом и ест суть уязвимости.
 
Dosia

Dosia

Well-known member
08.12.2016
96
27
Ну я демонстрировал что перечисление через метод OPTIONS не всегда работает...
Если конкретно про уязвимость HTTP Verb Tampering - то совсем не обязательно что бы было перечисление через OPTIONS, в примере с рутми там просто лимит на методы GET и POST .И используя любой другой метод мы обходим идентификацию на сервере,в этом и ест суть уязвимости.
Другие методы такие как: HEAD,PUT и тд.. Просто перебирать эти методы?
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
2 990
Не обязательно, может как в моем примере быть,какой то несуществующий метод,например:
LOL /secret.txt
 
K

KeepToMe

Не обязательно, может как в моем примере быть,какой то несуществующий метод,например:
LOL /secret.txt
Привет, DarkNode, я только учусь, ввожу nc 80 в кали и ничего не происходит, делал sudo apt-get install netcat, та же хрень... что не так?
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
2 990
Нужно после того как вы это ввели нажать клавишу Ентер,с новой строки вести запрос,потом еще раз ЕНтер,потом заголовок Host: Ентер,затем дважды нажать Ентер:

nc 80 <ENTER>
GET / HTTP/1.1 <ENTER>
Host: <ENTER>
<ENTER>
<ENTER>
 
  • Нравится
Реакции: Mixa и KeepToMe
I

Inject0r

Классная статья, хочу побольше обзоров всяких фишечек типа HTTP Verb Tamperin, просто и и познавательно очень :)
 
  • Нравится
Реакции: <~DarkNode~>
S

sdfsd

excuse me! A этот упражнение еще актуально? Cсылка про вектор HTTP Verb Tampering не рабочая а на рут-ми - в скрине.Это и есть HTTP Basic Auth?
вывод команды curl bash-4.2# curl -v | head
в файле.

[Web Application Pentesting] методы HTTP запросов, [HTTP Verb Tampering]
 

Вложения

  • 3,4 КБ Просмотры: 50
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
2 990
excuse me! A этот упражнение еще актуально? Cсылка про вектор HTTP Verb Tampering не рабочая а на рут-ми - в скрине.Это и есть HTTP Basic Auth?
вывод команды curl bash-4.2# curl -v | head
в файле.

Посмотреть вложение 8438
Вы пытаетесь зайти на главную страницу портала root-me. Для этого нужо иметь там акаунт(если вы хотите иметь рейтинг на портале рутми - то прийдется там зарегистрироватся) Вот к примеру
Если вы хотите просто по практиковатся в векторе HTTP Verb Tampering - то он доступен по ссылке:
 
S

sdfsd

Вы пытаетесь зайти на главную страницу портала root-me. Для этого нужо иметь там акаунт(если вы хотите иметь рейтинг на портале рутми - то прийдется там зарегистрироватся) Вот к примеру
Если вы хотите просто по практиковатся в векторе HTTP Verb Tampering - то он доступен по ссылке:
***Скрытый текст***
я про это
Вы пытаетесь зайти на главную страницу портала root-me. Для этого нужо иметь там акаунт(если вы хотите иметь рейтинг на портале рутми - то прийдется там зарегистрироватся) Вот к примеру
Если вы хотите просто по практиковатся в векторе HTTP Verb Tampering - то он доступен по ссылке:
***Скрытый текст***
 

Вложения

  • 42,1 КБ Просмотры: 93
ghostphisher

ghostphisher

гарант codeby
Gold Team
07.12.2016
2 515
3 353
По поводу root-me очень часто у них квесты не грузятся, сам с такой проблемой столкнулся, либо задание не удается загрузить - одно из таких ждал часов 6, пока не удалось скачать.
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
2 990
Все возможно,пока с такой проблемой не сталкивался.
 
ActionNum

ActionNum

Grey Team
27.11.2016
76
86
Спасибо за статью, очень познавательно! Взял на вооружение root-me. Немного не ясен вектор где фильтруется доступ по User-Agent, в теории я понимаю что его можно подменять, но на что много вариантов?! Брать и перебирать?
 
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб