Создание HTTP – запросов и их подмена

CLAY
Оффлайн
Регистрация
25.01.17
Сообщения
763
Реакции
224
Репутация
292
Создание HTTP – запросов и их подмена

Когда вы щелкаете по ссылке в окне браузера, он пытается создать TCP/IP-соединение с сервером, который может находится где-то в глубинах интернета. Как правило, соединение устанавливается с портом 80. Браузер отправляет серверу HTTP-запрос.

Большинство пользователей считают, что браузер – единственный способ подключится к серверу. Альтернативой может служить утилита telnet. Ниже приведен результат HTTP-запроса (80 порт) для получения информации заголовка из корневого каталога дерева веб-сервера localhost.

Анализируя данный заголовок, можно получить следующую информацию:

- Используется сервер Apache версии 1.3.26.

- Сервер запущен на UNIX-компьютере (точнее, это Linux, но в заголовке это не указано).

- Для сервера добавлена поддержка языка Perl с помощью модуля mod_perl версии 1.26.

А сейчас посмотрим, что выведет нам утилита telnet уже на операционной системе Windows. Пуск /выполнить/ cmd. Запускаем сервер. Вводим следующую запись: telnet localhost 80

И так, мы видим, тип сервера – Apache, версия 2.2.4, запущен модуль mod_ssl, версия 2.2.4, операционная система Windows.

А теперь попробуем изменить передаваемые данные.В случае с сервером Apache, проще всего изменить значение переменной ServerTokens в конфигурационном файле httpd.conf. Данная переменная может принимать следующие значения:

- Full – отобразить полную информацию об установленных модулях и версии сервера;

- Min – предоставить только информацию о названии сервера и установленных модулях;

- ProductOnly – показать лишь имя сервера.

Теперь добавим в файл httpd.conf строчку:

ServerTokens ProductOnly

Перезапускаем сервер и командную строку. При повторном подключении через телнет, мы получим лишь следующую информацию:

Как видим мы получили лишь название сервера, без информации о его версии и установленных модулях.

А теперь усложним задачу, попробуем выдать наш сервер за абсолютно другой.Для этого стоит перекомпилировать Apache. Надо отредактировать файл src/include/httpd.h (для версии Apache 2.0 – файл include/ap_release.h) и заменить следующие строки:

#define SERVER_BASEPRODUCT “Apache”

#define SERVER_BASEREVISION “1.3.26”

Напримерна

#define SERVER_BASEPRODUCT “KoolWeb”

#define SERVER_BASEREVISION “3.7.1”

Затем следует выполнить стандартные процедуры компиляции и установки Apache. Теперь мы получим следующую запись

Пожалуй многим приходилось наблюдать, как при переходе на несуществующую страницу на сайте – появлялась информация об ошибке, а ниже информация о типе сервера и работающем модуле. Возникает естественный вопрос, почему с самого начала не скрывать или подменить данную информацию в целях безопасности? Дело в том, что подобное изменение приведет к ошибкам при исследовании Netcraft ( ) или других подобных организаций и ваш компьютер попадет в группу “Other” (“Остальные”), как хост, на котором установлено неизвестное программное обеспечение.

Ограничение доступа

Давайте рассмотрим такую задачу, надо разрешить доступ на сайт лишь для определенных IP адресов или блока IP адресов. Если использовать для этой цели определенный язык программирования, то алгоритм будет следующим:

- Имеется массив, содержащий список разрешенных IP адресов;

- В начале скрипта запускается функция, которая определяет IP адрес пользователя;

- Идет проверка принадлежности IP адреса пользователя к списку IP адресов, если адрес пользователя входит в этот список – доступ разрешен, в противном случае – вывести станицу с запретом доступа.

Однако есть и альтернативный вариант. Создаем в корне сайта файл .htaccess (если его там не было). Допустим нам надо разрешить вход на сайт только с IP адреса 195.225.228.4 и блока 92.68.80.0 – 92.68.80.255. Вот пример кода:

Order Deny,Allow

Deny from All

Allow from 195.225.228.4

Allow from 92.68.80.

Я решил поместить данный код в файл .htaccess, который находится в одной из коневых папок одного из моих сайтов. Как и следовало ожидать сайт ответил следующими словами:

Forbidden

You don’t have permission to access / on this server.

Однако следует отметить следующую особенность, между Deny, и Allow не должно быть пробела, иначе будет ошибка 500. Как только я добавил строчку Allow from 127.0.0.1, сайт автоматически разрешил вход. Стоит также отметить, что, редактировать файл .htaccess стоит при помощи программы Notepad++, здесь играет роль кодировка.

А теперь давайте рассмотрим, что означают данные строки:

- Order Deny,Allow – Тут order – порядок выбора, Deny – запрет, Allow – разрешено.

- Deny from All – эту строчку можно перевести как: запрещено для всех;

- Allow from 195.225.228.4 – разрешено для IP-адреса 195.225.228.4.

Далее все понятно.
 
Сверху Снизу