Анализ защищенности web-серверов

Как уже было замечено, аудитор может проводить инструментальные проверки, охватывающие различные элементы ПИБ. Для примера того, как могут проходить такие проверки, рассмотрим возможный набор средств и ме- тодов  проведения  инструментальной  проверки  подсистемы  защиты  web- сервера.

Как известно, web-сервер представляет собой клиент-серверное прило-

жение, использующее для передачи данных протокол HTTP и стандартный порт  80/tcp. web-сервер ожидает HTTP-запрос от  клиента. При  получении HTTP-запроса web-сервер отвечает HTTP-ответом, который может содержать

HTML-, XML-документ либо иной тип данных (изображение, текстовый до- кумент, мультимедийный файл и др.). Если HTTP-запрос от клиента не может быть  обработан (ошибка в  запросе или  неосуществимый запрос), то  web- сервер должен послать ответ, содержащий код и описание ошибки.

Поскольку протокол HTTP является протоколом уровня приложений,

использующим текстовые команды, посмотреть передаваемые web-сервером данные можно с использованием утилиты NetCat (nc). В примере ниже осуще- ствляется стандартное TCP-подключение с использованием этой утилиты с перенаправлением потока вводимых с клавиатуры данных на сервер:

nc <имя   или   адрес узла> <номер  порта>.

nc 192.168.10.3 80

GET / HTTP/1.0

Серверу передается команда GET, запраши- вающая корневой документ сервера, с указани- ем версии HTTP 1.0. После ввода этой коман- ды необходимо дважды нажать Enter.

HTTP/1.0 200 OK

Сервер отвечает кодом 200, означающим, что запрос клиента обработан успешно и ответ сервера содержит затребованные данные.

Server: Apache/1.3.37 (Unix) PHP/4.4.4

Строка идентифицирует имя и версию web-

сервера.

Date: Wed, 29 Nov 2006

18:19:11 GMT

Текущее время и дата системных часов серве-

ра.

Last-Modified: Sun, 15

Jun 2003 17:34:53 GMT

Время последней модификации передаваемого документа.

Content-Type: text/html

Тип передаваемых данных (HTML).

Content-Length: 620

Длина передаваемых данных.

<html>

<head>

</html>

Собственно передаваемые данные.

Таким образом, используя простое подключение к web-серверу, можно получить достаточно большой объем информации о сервере: версию сервера, набор подключенных модулей, их версии и др.

Для обследования web-сервера в первую очередь необходимо провести обследование ОС сетевого узла, на котором он запущен. Затем можно исполь-

зовать тесты, специфичные для web-сервера.

Для автоматизации поиска доступных файлов и каталогов, располагаю-

щихся на web-сервере, можно использовать утилиту Cgichk. Для тестирования web-узла 192.168.10.1 с использованием этой утилиты можно воспользоваться командой:

> CGICHK.EXE 192.168.10.1

HEADER:

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Sun, 15 Oct 2006 18:47:54 GMT

Connection: Keep-Alive

Content-Length: 1295

Content-Type: text/html

Set-Cookie: ASPSESSIONIDQQGGGRUC=IFFBLHDBEBLBFMDEHGNMOOBL; path=/ Cache-control: private

———————————————————— DIRECTORIES:

Found /images (403) Found /test (200) Found /_private (403) Found /scripts (403)

INTEREST:

Found /cgi-bin/ (403) SPECIFIC:

Found /robots.txt (200)

Указанная утилита возвращает содержимое заголовков HTTP-ответа, а также проводит поиск web-директорий, располагающихся на сервере. Из вы- вода этой утилиты видно, что  на  сервере имеются доступные директории

«images», «test», «_privat», «scripts». Исходя из  названия этих директорий,

можно  сделать  предположения об  информации, которая  находится  в  них.

Также указывается список «интересных» директорий, которые могут содер- жать уязвимые компоненты. Секция вывода «SPECIFIC» содержит дополни- тельно найденные элементы сайта. Например, найденный файл «robots.txt» может быть использован для поиска скрытых web-директорий сервера.

Для  автоматизации  поиска  известных  уязвимостей  web-приложений можно использовать утилиту Nikto. Утилита Nikto представляет собой сканер,

написанный на интерпретируемом языке Perl, который реализует всесторон- нее тестирование web-сервера и web-приложений. Данный сканер включает базу о более чем 3200 потенциально опасных файлах и 624 web-серверах. Мо-

дули сканирования и база уязвимостей часто обновляются.

Для  запуска  утилиты  nikto  можно  воспользоваться  командой  perl nikto.pl –h 192.168.10.3, ключ  -h  предназначен для  указания IP- адреса или DNS-имени обследуемого узла. Символом «#» отмечены коммен- тарии к выводу утилиты.

> perl nikto.pl -h 192.168.10.3

# Версия утилиты

– Nikto 1.35/1.34

# IP-адрес обследуемого сервера

+ Target IP:      192.168.10.3

# Имя обследуемого сервера (возможно имя виртуального сервера)

+ Target Hostname: 192.168.10.3

# Номер порта, на котором функционирует сервер

+ Target Port:    80

# Метка времени начала сканирования

+ Start Time:     Sun Oct 15 23:42:54 2006

—————————————————————–

# Указание на то, что обследуемый сервер не обязательно будет возвращать

# правильный параметр «Server» (тип и версия обследуемого сервера), с

# использованием опции –g можно явно задать версию сервера. От этого

# параметра будет зависеть состав тестов, которые будет проводить nikto.

– Scan is dependent on "Server" string which can be faked, use -g to override

# Обнаруженные тип и версия сервера

+ Server: Apache/1.3.33 (Debian GNULinux)

# Перечень доступных серверных HTTP-команд (запросов)

+ Allowed HTTP Methods: GET, HEAD, OPTIONS, TRACE

# Указание на то, что команда TRACE должна быть разрешена только для

# отладочных задач

+ HTTP method ‘TRACE’ is typically only used for debugging. It should be disabled. OSVDB-877.

# Указывает на то, что версия web-сервера Apache на обследуемом узле

# является устаревшей, однако до сих пор поддерживается разработчиком и считается безопасной.

+ Apache/1.3.33 appears to be outdated (current is at least Apache/2.0.54). Apache 1.3.33 is still maintained and considered secure.

# Включено индексирование каталога /icons/. Оно должно быть включено

# для специальных каталогов. В скобках указывается тип запроса,

# с помощью которого была получена информация.

+ /icons/ – Directory indexing is enabled, it should only be en- abled for specific directories (if required). If indexing is not used all, the /icons directory should be removed. (GET)

# Используя каталог /server-status, можно получить много информации о

# сервере Apache. Рекомендуется ограничить доступ к этому ресурсу.

+ /server-status – This gives a lot of Apache information. Com- ment out appropriate line in httpd.conf or restrict access to al- lowed hosts. (GET)

# Неотключенная команда TRACE может быть использована для реализации

# атаки типа XSS (межсайтовый скриптинг) или для кражи

# идентификационных данных. Указывается ссылка на адрес, по которому

# можно получить подробное описание найденной уязвимости.

+ / – TRACE option appears to allow XSS or credential theft. See http://www.cgisecurity.com/whitehat-mirror/WhitePaper_screen.pdf for details (TRACE)

# Каталог /doc открыт для просмотра.

+ /doc/ – The /doc directory is browsable. This may be /usr/doc. (GET)

# Было проведено 2563 теста, найдено 5 элементов.

+ 2563 items checked – 5 item(s) found on remote host(s)

+ End Time:        Sun Oct 15 23:43:07 2006 (13 seconds)

—————————————————————–

+ 1 host(s) tested

Таким образом, с помощью утилиты nikto аудитор может получить ин- формацию  об  уровне  защищенности  web-сервера,  сформировать  перечень присутствующих уязвимостей различного типа. После обнаружения уязвимых сервисов, аудитор может произвести демонстрацию возможных действий зло- умышленника и оценить уровень связанных с каждым классом уязвимостей рисков.

Фрагмент аналитического отчета по результатам тестирования подсис-

темы  защиты  web-сервера,  установленного  на  сетевом  узле  с  IP-адресом

192.168.10.3, может иметь следующий вид.

Источник: Андрончик А. Н., Богданов В. В., Домуховский Н. А., Коллеров А. С., Синадский Н. И., Хорьков Д. А., Щербаков М. Ю., Защита информации в компьютерных сетях. Практический курс

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий