1. HTML цвет текста

    Продолжается запись в группу обучающего курса! Успей занять свое место! Подробности

    Скрыть объявление
  2. HTML цвет текста

    Зеркало форума в зоне Тор - http://wp3whcaptukkyx5i.onion/

    Стандартные зеркала форума - procrd.co procrd.me
    Скрыть объявление

Http verb tampering, фальсификация HTTP заголовков методом GET и POST запросов.

Тема в разделе "Разное", создана пользователем Yamotano, 26 июн 2016.

  1. Yamotano

    Yamotano Пользователь
    Регистрация:
    22 авг 2015
    Сообщения:
    28
    Симпатии:
    15
    Пол:
    Мужской
    Статья не моя. Автор статьи .V1nest.

    Пролог
    Статья посвящена, как вы уже догадались, фальсификации HTTP заголовков методом GET и POST запросов. Данная статья не является мануалом ко взлому механизмааутентификации, а лишь способом тестирования на проникновение (как это сейчас модно называть) своих личных машин. Статья написана исключительно в ознакомительныхцелях, автор не несёт никакой ответственности за неправомерное её использование.

    Преамбула
    HTTP Verb Tampering (HTTP Verb Фальсификация) является атакой, которая использует уязвимость в HTTP-Verb аутентификации и механизмах контроля доступа. Многие механизмы аутентификации только ограничивают доступ по своим параметрам, не предусматривая несанкционированный доступ к закрытым ресурсам с помощью других методов.
    Многие механизмы аутентификации веб-сервера используют HTTP Verb и управления доступом. Такие механизмы безопасности включают в себя правила управления доступом для запросов с конкретными методами HTTP, а так же стандартными, такими как GET и POST. Однако веб-сервер реагирует и на альтернативные методы, которые не предвидел разработчик или даже на произвольные строки символов.
    Пример методов:

    OPTIONS
    GET
    HEAD
    POST
    PUT
    DELETE
    TRACE
    CONNECT


    Почитать о них можно тут.

    Фабула
    Java Platform Enterprise Edition (Java EE) поддерживает Verb-аутентификацию и управление доступом через файл конфигурации web.xml. В Java EE, можно ограничить доступ к /administration/ каталогу для «adminstrator» пользователей, добавив следующие строки в web.xml:

    <security-constraint>
    <web-resource-collection>
    <url-pattern>/administration/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
    <role-name>administrator</role-name>
    </auth-constraint>
    </security-constraint>


    Эти правила безопасности, обеспечивают блокировку GET или POST-запросов к /administration/ каталогам, от пользователей не наделенных администраторскими правами. Тем не менее, HTTP-запросы, составленные определённым бразом к /administration/ каталогам блокироваться не будут. Хотя GET запрос от обычного пользователя будет заблокирован, HEAD запрос от него же заблокирован не будет. Если администратор настраивает веб-сервер, чтобы запретить все методы, отличные от GET и POST, механизм контроля доступа всё равно можно обойти, просто используя различные методы, которые поддерживаются сервером. Веб-сервера, уязвимые к данным запросам: IIS 6.0, Apache 2.2.8, и Tomcat 6.0.
    У некоторых веб-серверов, например, Apache 2.2/PHP-it есть возможность обойти механизм контроля доступа с помощью произвольных строк символов для методов HTTP. Такие веб-сервера, осуществляют обработку запросов, которые не привязаны к конкретным методам HTTP. В отличие от HTTP, где GET запрос обрабатывается только если doGet() определен, некоторые веб-сервера пытаются обработать любые методы, включая неизвестные. Таким образом, заменяя законный метод на произвольный, атакующий может использовать уязвимости в обработке внутренней логики и обойти механизм контроля доступа.
    Для проведения атаки вполне подойдет расширение для Firefox «HttpRequester»

    Для того, чтобы изучить заголовки вручную, нам понадобится NetCat (является стандартным дистрибутивом для Linux), либо Telnet (входит в состав Windows). Запросы довольно примитивны и выглядят аналогично для обоих способов:

    [METHOD] /[index.htm] HTTP/1.1
    host: *Ваш хост*


    Для того, чтобы изучить заголовки и их реакцию, создадим .txt файлы, в ваших любимых редакторах, со следующим содержимым:

    • OPTIONS

      OPTIONS /index.htm[*] HTTP/1.1
      host: *Ваш хост*
    • GET

      GET /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    • HEAD

      HEAD /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    • POST
      Код:
      POST /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    • PUT
      Код:
      PUT /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    • DELETE
      Код:
      DELETE /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    • TRACE
      Код:
      TRACE /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    • CONNECT
      Код:
      CONNECT /index.htm[*] HTTP/1.1
      host: *Ваш хост*

    Отправим запросы на веб-сервер с помощью NetCat или Telnet на порт 80 (HTTP):

    nc *Ваш хост* 80 < OPTIONS.http.txt


    Для того, чтоб автоматизировать весь процесс достаточно применить следующий bash скрипт, он будет проверять все доступные методы HTTP:

    #!/bin/bash

    for webservmethod in GET POST PUT TRACE CONNECT OPTIONS PROPFIND;

    do
    printf "$webservmethod " ;
    printf "$webservmethod / HTTP/1.1\nHost: $1\n\n" | nc -q 1 $1 80 | grep "HTTP/1.1"

    done



    Заключение
    Несмотря на то, что каждый метод HTTP потенциально может возвращать различные результаты, есть только один действительный результат для всех, отличных от GET и POST методов - веб-сервер должен либо игнорировать запрос полностью или возвращать ошибку. Любой другой ответ указывает на потенциальную уязвимость. Эти методы должны быть отключены.
     
    nikak и BadMan4ik нравится это.
Загрузка...