Статья посвящена, как вы уже догадались, фальсификации HTTP заголовков мотодом GET и POST запросов. Данная статья не является мануалом ко взлому механизма аутентификации, а лишь способом тестирования на проникновение (как это сейчас модно называть) своих личных машин. Статья написана исключительно в ознакомительных целях, автор не несёт никакой ответственности за неправомерное её использование.
Преамбула
HTTP Verb Tampering (HTTP Verb Фальсификация) является атакой, которая использует уязвимость в HTTP-Verb аутентификации и механизмах контроля доступа. Многие механизмы аутентификации только ограничивают доступ по своим параметрам, не предусматривая несанкционированный доступ к закрытым ресурсам с помощью других методов.
[ad name=»Responbl»]
Многие механизмы аутентификации веб-сервера используют 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.
[ad name=»Responbl»]
У некоторых веб-серверов, например, Apache 2.2/PHP-it есть возможность обойти механизм контроля доступа с помощью произвольных строк символов для методов HTTP. Такие веб-сервера, осуществляют обработку запросов, которые не привязаны к конкретным методам HTTP. В отличие от HTTP, где GET запрос обрабатывается только если doGet() определен, некоторые веб-сервера пытаются обработать любые методы, включая неизвестные. Таким образом, заменяя законный метод на произвольный, атакующий может использовать уязвимости в обработке внутренней логики и обойти механизм контроля доступа.
Для проведения атаки вполне подойдет расширение для Firefox «HttpRequester»
[ad name=»Responbl»]
Для того, чтобы изучить заголовки вручную, нам понадобится NetCat (является стандартным дистрибутивом для Linux), либо Telnet (входит в состав Windows). Запросы довольно примитивны и выглядят аналогично для обоих способов:
[METHOD] /[index.htm] HTTP/1.1 host: [www.example.com]
Для того, чтобы изучить заголовки и их реакцию, создадим .txt файлы, в ваших любимых редакторах, со следующим содержимым:
OPTIONS /index.htm[*] HTTP/1.1 host: www.xaker.name
GET /index.htm[*] HTTP/1.1 host: www.xaker.name
HEAD /index.htm[*] HTTP/1.1 host: www.xaker.name
POST /index.htm[*] HTTP/1.1 host: www.xaker.name
PUT /index.htm[*] HTTP/1.1 host: www.xaker.name
DELETE /index.htm[*] HTTP/1.1 host: www.xaker.name
TRACE /index.htm[*] HTTP/1.1 host: www.xaker.name
CONNECT /index.htm[*] HTTP/1.1 host: www.xaker.name
Отправим запросы на веб-сервер с помощью NetCat или Telnet на порт 80 (HTTP):
nc www.xaker.name 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.1nHost: $1nn" | nc -q 1 $1 80 | grep "HTTP/1.1" done
Заключение
Несмотря на то, что каждый метод HTTP потенциально может возвращать различные результаты, есть только один действительный результат для всех, отличных от GET и POST методов — веб-сервер должен либо игнорировать запрос полностью или возвращать ошибку. Любой другой ответ указывает на потенциальную уязвимость. Эти методы должны быть отключены.
Облачные приложения по своей природе используют микросервисы, контейнеризацию, динамическую оркестровку и в значительной степени полагаются…
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…