«Техника сетевых атак»
Вид материала | Краткое содержание |
СодержаниеВрезка «замечание» Врезка «замечание» Bad Request Врезка «информация» |
- Комплексный подход к обнаружению сетевых атак, 70.8kb.
- Предотвращение атак: революция или эволюция?, 98.18kb.
- Темы курсовых работ по дисциплине «Безопасность и управление доступом в ис» Модель, 15.44kb.
- Технические особенности сетевых сообществ и их педагогические следствия, 124.33kb.
- А. А. Грабко научный руководитель В. С. Горбатов, к т. н., доцент Московский инженерно-физический, 29.26kb.
- Это комплекс взаимосвязанных и согласованно функционирующих программных и аппаратных, 277.11kb.
- Лекция: Определение локальных сетей и их топология Вэтой лекции говорится о базовой, 250.42kb.
- Лекция: Определение локальных сетей и их топология Вэтой лекции говорится о базовой, 318.77kb.
- Тутер Нина Валерьевна Клинико-психофизиологический анализ панических атак при различных, 560.1kb.
- Использование современных компьютерно-сетевых технологий в информационном обеспечении, 158.29kb.
Simple POST Sample
USER:kpnc
PASS:saltmine
- POST /~kpnc/cgi-bin/post.pl HTTP/1.0
- Content-length:25
- user=kpnc
- &pass=saltmine
- HTTP/1.1 200 OK
- Date: Sun, 16 Apr 2000 17:00:34 GMT
- Server: Apache/1.3.6 (Unix)
- Connection: close
- Content-Type: text/html
Simple POST Sample
USER:kpnc
PASS:saltmine
Идентичность ответов сервера доказывает, что независимо от способа передачи параметров, удаленная программа работает одинаково. Причем, перенос строки в методе POST не способен отделить один параметр от другого и если символ-разделитель «&» опустить, будет обработана только одна лексема – “user=kpnc”.
Врезка «замечание»
Если возникнут затруднения с определением поля “Content length”, задающим длину строки параметров (что особенно характерно для работы в telnet клиенте), ее можно взять «с запасом», заполнив оставшийся конец мусором.
Метод POST позволяет передавать на сервер сообщения практически неограниченной длины,271 поэтому, он позволяет организовать HTTP закачку файлов на сервер, даже в том случае, когда метод PUT недоступен.
Метод DELETE, как и следует из его названия, предназначен для удаления ресурсов с сервера, однако, очень трудно представить себе администратора который бы допускал ее выполнение неавторизованным пользователям. Тщательные поиски так и не помогли найти ни одного примера в сети для демонстрации, поэтому придется ограничиваться «голой» теорией272.
На этом описание методов протокола HTTP пришлось бы и закончить, если бы в 1996 году не появилась новая, значительно улучшенная спецификация - HTTP/1.1. Подробно все нововведения описаны в RFC 2068, здесь же будут перечислены лишь основные моменты.
Врезка «замечание»
Спецификация HTTP/1.0 поддерживает метод HEAD, который аналогичен GET, но возвращает лишь заголовок ответа, без тела сообщения.
Как правило, он используется для быстрой проверки доступности ресурса, что делает его привлекательным кандидатом на роль переборщика имен файлов, в надежде получить несанкционированный доступ к данным, «защита» которых базируется на одном лишь засекречивании ссылок. Удивительно, но такая атака часто срабатывает.
Прежде всего, требует пояснения ситуация, связанная с попыткой использования любого метода, с указанием номера новой версии. Например, на запрос “GET /~kpnc/ HTTP/1.1” сервер возвратит сообщение об ошибке 400 – “неверный запрос”. Такая ситуация продемонстрирована в примере, приведенном ниже:
- GET /~kpnc/ HTTP/1.1
- HTTP/1.1 400 Bad Request
- Date: Tue, 18 Apr 2000 14:18:41 GMT
- Server: Apache/1.3.6 (Unix)
- Connection: close
- Transfer-Encoding: chunked
- Content-Type: text/html
- 184
- HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
400 Bad Request
-
Bad Request
- Your browser sent a request that this server could not understand.
- client sent HTTP/1.1 request without hostname
- (see RFC2068 section 9, and 14.23): /~kpnc/
- Apache/1.3.6 Server at lightning.prohosting.com Port 80
Ознакомившись с ответом сервера, мысленно поблагодарим разработчиков за разъяснение причин отказа в обслуживании. Открыв секцию 14.23 технической документации RFC 2068, можно узнать, что, начиная с версии 1.1, становиться обязательным поле “Host”, содержащее базовый адрес и порт узла. (“If the Host field is not already present… all Internet-based “HTTP/1.1” servers MUST respond with a 400 status code to any “HTTP/1.1” request message which lacks a Host header field”). Впрочем, указывать порт необязательно, при его отсутствии сервер использует значение по умолчанию273. Такой механизм позволяет отличать gateway серверам внутренние ссылки от внешних, оптимизируя сетевой трафик.
Поэтому, запрос должен выглядеть приблизительно следующим образом (необходимые пояснения даны ниже):
- ; Подключение узлу kpnc.softclub.net
- TRACE /hello HTTP/1.1
- Host:kpnc.softclub.net
- HTTP/1.1 200 OK
- Date: Tue, 18 Apr 2000 18:37:47 GMT
- Server: Apache/1.3.12 (Unix) mod_perl/1.22 AuthMySQL Plus/2.20.2 PHP/3.0.14 rus/PL29.4
- Transfer-Encoding: chunked
- Content-Type: message/http
- 32
- TRACE /hello HTTP/1.1
- Host: kpnc.softclub.net
Метод TRACE274 очень сильно напоминает Echo (эхо), используемое для тестирования качества линии связи и быстроты реакции сервера. Получив TRACE запрос, узел должен немедленно вернуть его отправителю, указав в факультативном275 поле “Age” количество секунд, потраченных сервером на обработку запроса. Это позволяет администраторам инспектировать сетевой трафик, пользователям – выбирать быстрейший сервер из нескольких зеркал, а злоумышленникам оценивать пагубность влияния различных запросов на сервер, направленных на попытку добиться отказа в обслуживании.
Врезка «информация»
На сегодняшний день большинство серверов не поддерживают спецификацию ниже HTTP/1.1, отказываясь обслуживать устаревшего клиента. ссылка скрыта – один из немногих, которых удалось найти автору этой книги для демонстрации запросов HTTP/0.9 и HTTP/1.0
Дополнительная информация о сервере может быть получена с помощью метода “OPTIONS” с указанием символа-джокера вместо имени ресурса (возвратить всю доступную информацию).
Например:
- OPTIONS * HTTP/1.1
- Host:kpnc.softclub.net
- HTTP/1.1 200 OK
- Date: Tue, 18 Apr 2000 19:00:58 GMT
- Server: Apache/1.3.12 (Unix) mod_perl/1.22 AuthMySQL Plus/2.20.2 PHP/3.0.14 rus/PL29.4
- Content-Length: 0
- Allow: GET, HEAD, OPTIONS, TRACE
В приведенном примере сервером сообщается установленное на нем программное обеспечение (вплоть до версии реализации) и разрешенные методы – GET, HEAD, OPTIONS, TRACE; очевидно, среди них нет ни PUT, ни DELETE, ни даже POST (администратор этого узла не сумасшедший).
Информация подобного рода значительно облегчает злоумышленнику поиск дыр в системе безопасности, потому что он может воссоздать конфигурацию сервера на собственной машине и целенаправленно исследовать код приложений на предмет ошибок, позволяющих неавторизованному пользователю получить привилегированный доступ.