Опубликован: 20.02.2007 | Уровень: специалист | Доступ: платный
Лекция 8:

Средства взлома Web-приложений Hacking Tools

Nikto

Прежде чем развиваться в качестве самостоятельной утилиты, whisker был создан, чтобы пополнить Perl-библиотеку средств сканирования. Nikto основывается на новом поколении LibWhisker-библиотеки. С самого начала программа поддерживает сканирование портов с поддержкой SSL и прокси.

Реализация

Основанный на Perl, nikto может выполняться под Unix, Windows и Mac OSX. Программа использует стандартные Perl-библиотеки, входящие в поставку. Вы можете загрузить утилиту nikto по адресу http://www.securitysearch.net/tools.cfm. Для работы также требуется LibWhisker (LW.pm).

LibWhisker. Полнофункциональная копия LibWhisker поставляется вместе с архивом nikto. Вы также можете загрузить полный Perl-модуль по адресу http://www.wiretrip.net/rfp/2/index.asp. Инсталляция очень проста. После разархивирования войдите в директории и соберите библиотеку. Как только сборка закончится, установите LW.pm в вашу Perl-директорию. Выполните следующую последовательность команд.

$ cd libwhisker-1.3
$ perl Makefile.pl lib
$ perl Makefile.pl install

LibWhisker может показаться немного избыточным, поскольку он включает в себя функциональность нескольких, уже существующих Perl-модулей, таких как LWP, Base64 и HTML::Parser. Преимущества LibWhisker в том, что это "тощая" (минимальный размер файла по сравнению с модулями, функциональность которых он заменяет), простая (один модуль), специализированная (поддерживает только HTTP- и HTTPS-запросы) и живучая (обеспечивает единый интерфейс для поддержки запросов и приема ответов) утилита. Кроме того, она понятнее, чем оригинальная программа whisker!

Сканирование. Основные параметры командной строки nikto отличаются от команд whisker, поэтому вам придется осваивать новые параметры. Сравните командную строку whisker с аналогичной командной строкой nikto.

$ whisker.pl -h 192.168.42.27 -w -W | \
> tee whisker80_192.168.42.27.html.raw
$ nikto.pl -host 192.168.42.27 -verbose -web -output \
> nikto80_192.168.42.27.html.raw

Выходная информация Nikto содержит указания на то, почему поиск может угрожать безопасности.

Target IP: 192.168.42.27
Target Hostname: www.victim.com
Target Port: 80
----------------------------------------------------
o   Scan is dependent on "Server" string which can be faked, use -g to override
o   Server: WebSTAR/4.2 (Unix) mod_ssl/2.8.6 OpenSSL/0.9.6c
o   Allowed HTTP Methods: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS,
    PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE
o   Server allows PUT method, may be able to store files.
o   CONNECT method is enabled, server may act as a proxy or relays.
o   Server allows DELETE method, may be able to remove files.
o   Server allows PROPFIND or PROPPATCH methods, which indicates DAV/WebDAV is
    installed. Both allow remote admin and have had security problems.
o   WebSTAR/4.2(Unix)mod_ssl/2.8.6OpenSSL/0.9.6c appears to be outdated
    (current is at least mod_ssl/2.8.7) (may depend on server version)
o   /public/ Redirects to 'http://www.foundstone.com/public', this might be
    interesting...
o   robots.txt - This file tells web spiders where they can and cannot go (if they follow
    RFCs). You may find interesting directories listed here. (GET)
o   cgi-bin/htsearch?-c/nonexistant - The ht::/Dig install may let an attacker force  
    ht::/Dig to read arbitrary config files for itself.
    (GET)
885 items checked on remote host
8.3.

В таблице 8.1 перечислены основные параметры, необходимые для запуска утилиты nikto. Наиболее важные параметры устанавливают тестируемый хост, порт и выходной файл. Nikto воспринимает первый символ имени параметра как синоним. Например, вы можете ввести -s или -ssl, чтобы использовать протокол HTTPS, или вы можете задать -w или -web для получения выходной информации в формате HTML.

Таблица 8.1. Параметры командной строки Nikto и их эквиваленты в Whisker
Nikto Whisker Описание
-host -h Задает один хост. nikto не принимает файлы с именами хостов, так как это делает опция -H в whisker.
-port -p Задает произвольный порт.
-verbose -v, -w Обеспечивает подробный отчет. Это единственная опция, которую не представляют аббревиатурой (-v зарезервирована для опции виртуального хоста).
-ssl -x Активизирует поддержку SSL. nikto не предполагает HTTPS, если вы специфицировали целевой порт 443.
-generic -S Указывает nikto игнорировать заголовок сервера и запускать сканирование всей базы данных. В отличие от опции whisker -S, вы не даете строки альтернативного заголовка после опции.
-web -W Выводить отчет в HTML.
-output -l Заносить протокол в файл. Например, -output nikto80_www.victim.com.html.
-id -a Поддержка полномочий базовой идентификации HTTP. Например, -id username:password.
-vhost -V Использовать виртуальный хост для целевого Web-сервера вместо IP-адреса.
-evasion -I Техника обхода IDS. nikto использует 9 различных техник, чтобы форматировать запрос URL и ускользнуть от обнаружения в IDS.

Следует помнить несколько основных положений в работе с утилитой nikto: задавайте хост ( -h ), порт ( -p ), SSL ( -s ) и имя выходного файла. Дополнительные параметры подробно описаны в таблице 8.2. По большей части эти параметры охватывают возможности большинства утилит для сканирования.

Таблица 8.2. Дополнительные параметры командной строки Nikto
Опция Описание
-allcgi Сканирует все возможные директории CGI. Не обращает внимания на ошибки 404, которые nikto получает для базовой директории. Подробности см. в разделе "Config.txt".
-mutate Видоизмененные проверки описываются в "Config.txt".
-findports Сканирует целевой сервер. Это сканирование использует nmap или внутренние сокеты на базе Perl.
-nolookup Не определяет имена хостов по IP-адресу.
-timeout N Останавливает сканирование, если не получает данных в течение N секунд. По умолчанию - 10.
-update Обновляет модули nikto и выясняет существование новых версий.

Параметр -update упрощает процедуру сопровождения утилиты nikto. Этот параметр заставляет программу соединиться с хостом www.cirt.net и загрузить дополнительные модули для поддержания листа сканирования в текущем состоянии.

$ ./nikto.pl -update
----------------------------------
- Nikto v1.100BETA_2 - www.cirt.net -
+ Retrieving 'scan_database.db'
www.cirt.net message: Send comments on Nikto to cirt.net so it can be
a better product.

Config.txt. Nikto использует настроечный файл config.txt для установки отдельных, наименее часто используемых параметров, или наоборот, наиболее часто используемых в процессе сканирования. Этот файл включает дюжину настроек. Параметр может быть закомментирован с помощью символа #. Ниже приведены настройки по умолчанию:

CGIDIRS=/bin/ /cgi/ /mpcgi/ /cgi-bin/ /cgi-sys/ /cgi-local/ /htbin/
 /cgibin/ /cgis/ /scripts/ /cgi-win/ /fcgi-bin/
#CLIOPTS=-g -a
#NMAP=/usr/bin/nmap
SKIPPORTS=21 111
#PROXYHOST=10.1.1.1
#PROXYPORT=8080
#PROXYUSER=proxyuserid
#PROXYPASS=proxypassword
DEFAULTHTTPVER=1.1
#PLUGINDIR=/usr/local/nikto/plugins
MUTATEDIRS=/....../ /members/ /porn/ /restricted/ /xxx/
MUTATEFILES=xxx.htm xxx.html porn.htm porn.html

Строка CGIDIRS содержит список директорий, разделенный пробелом. Nikto пытается определить наличие каждой из директорий перед началом ее просмотра. Соответственно, параметр -allcgi отменяет такой порядок работы.

Строка CLIOPTS содержит параметры командной строки, которые будут использоваться при каждом запуске nikto. Этот прием обычно используется для сокращения командной строки. В файл включаются параметры -generic, -verbose и -web.

Строки NMAP и SKIPPORTS управляют политикой сканирования портов ( -findports ). Если не поддерживается выполнение исходного модуля nmap (что обычно для Windows-систем), nikto использует для сканирования портов Perl-функции. Строка SKIPPORTS содержит список портов, которые никогда не сканируются.

Используйте строку PROXY* для включения поддержки прокси.

Также довольно редко возникает необходимость изменять строку DEFAULTHTTPVER. Вы можете поискать серверы, использующие только версию 1.0.

Строка PLUGINDIR определяет директорию для размещения определяемых пользователем модулей (аналоги файлов scan.db в whisker ). По умолчанию nikto осуществляет поиск в директории /plugins, размещаемой в директории, откуда программа запускается.

Строки MUTATE* существенно увеличивают время, которое требуется для сканирования сервера с параметром mutate. Инструкция MUTATEDIRS устанавливает, что проверка каждой директории должна начинаться от корня или от перечисленных ниже директорий. Этот прием обычно используется для Web-сайтов, которые используют интернационализацию, вследствие чего директория /scripts заменяется на директорию /1033/scripts. Инструкция MUTATEFILES определяет необходимость сканировать каждый файл в приведенном списке директорий.

Сергей Хлюкин
Сергей Хлюкин
Россия, Москва, Московский Государственный Открытый Университет, 2007
Игорь Касаткин
Игорь Касаткин
Россия, Москва