Поиск по сайту:

Nikto — уязвимости веб-приложений и сканер CGI для веб-серверов


Nikto Web Scanner – еще один полезный инструмент в арсенале любого администратора Linux. Это веб-сканер с открытым исходным кодом, выпущенный под лицензией GPL, который используется для выполнения комплексных тестов на веб-серверах для множества элементов, включая более 6500 потенциально опасных файлов/CGI. .

Рекомендуется к прочтению: WPSeku — сканер уязвимостей для поиска проблем безопасности в WordPress

Он написан Крисом Соло и Дэвидом Лоджем для оценки уязвимости. Он проверяет наличие устаревших версий на 1250 веб-серверах и более 270 проблем, связанных с конкретной версией. Он также сканирует и сообщает об устаревшем программном обеспечении и плагинах веб-сервера.

Возможности веб-сканера Nikto

  1. Поддерживает SSL
  2. Поддерживает полный HTTP-прокси.
  3. Поддерживает текст, HTML, XML и CSV для сохранения отчетов.
  4. Сканировать несколько портов
  5. Может сканировать на нескольких серверах, получая входные данные из файлов, таких как выходные данные nmap.
  6. Поддержка LibWhisker IDS
  7. Достаточно способен идентифицировать установленное программное обеспечение по заголовкам, файлам и значкам.
  8. Логи метасплоитов
  9. Отчеты для «необычных» заголовков.
  10. Перечисление пользователей Apache и cgiwrap
  11. Аутентификация хостов с помощью Basic и NTLM
  12. Сканирование может быть автоматически приостановлено в указанное время.

Никто Требования

Система с базовой установкой Perl, Perl Modules, OpenSSL должна позволить запустить Nikto. Он был тщательно протестирован на Windows, Mac OSX и различных дистрибутивах Unix/Linux, таких как Red. Hat, Debian, Ubuntu, BackTrack и т. д.

Установка Nikto Web Scanner в Linux

Большинство современных систем Linux поставляются с предустановленными пакетами Perl, Perl Modules и OpenSSL. Если они не включены, вы можете установить их с помощью утилиты системного менеджера пакетов по умолчанию, которая называется yum или apt-get.

В Red Hat/CentOS/Fedora
[root@tecmint ]# yum install perl perl-Net-SSLeay openssl
В Debian/Ubuntu/Linux Mint
[root@tecmint ]# apt-get install perl openssl libnet-ssleay-perl

Затем клонируйте последние стабильные исходные файлы Nikto из репозитория Github, перейдите в каталог Nikto/programs/ и запустите его с помощью Perl:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Пример вывода
Option host requires an argument

       -config+            Use this config file
       -Display+           Turn on/off display outputs
       -dbcheck            check database and other key files for syntax errors
       -Format+            save file (-o) format
       -Help               Extended help information
       -host+              target host
       -id+                Host authentication to use, format is id:pass or id:pass:realm
       -list-plugins       List all available plugins
       -output+            Write output to this file
       -nossl              Disables using SSL
       -no404              Disables 404 checks
       -Plugins+           List of plugins to run (default: ALL)
       -port+              Port to use (default 80)
       -root+              Prepend root value to all requests, format is /directory
       -ssl                Force ssl mode on port
       -Tuning+            Scan tuning
       -timeout+           Timeout for requests (default 10 seconds)
       -update             Update databases and plugins from CIRT.net
       -Version            Print plugin and database versions
       -vhost+             Virtual host (for Host header)
   		+ requires a value

	Note: This is the short help output. Use -H for full help text.

«Опции хоста требуется аргумент» ясно говорит о том, что мы не включили необходимые параметры при выполнении теста. Итак, нам нужно добавить базовый необходимый параметр для выполнения тестового запуска.

Базовое тестирование

Для базового сканирования требуется хост, на который вы хотите ориентироваться. По умолчанию он сканирует порт 80, если ничего не указано. Хостом может быть либо имя хоста, либо IP-адрес системы. Вы можете указать хост, используя опцию «-h».

Например, я хочу выполнить сканирование IP 172.16.27.56 и TCP-порта 80.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Пример вывода
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        80
+ Start Time:         2014-01-10 00:48:12 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Retrieved x-powered-by header: PHP/5.3.3
+ The anti-clickjacking X-Frame-Options header is not present.
+ Server leaks inodes via ETags, header found with file /robots.txt, inode: 5956160, size: 24, mtime: 0x4d4865a054e32
+ File/dir '/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ "robots.txt" contains 1 entry which should be manually viewed.
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
+ Multiple index files found: index.php, index.htm, index.html
+ DEBUG HTTP verb may show server debugging information. See http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx for details.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3233: /phpinfo.php: Contains PHP configuration information
+ OSVDB-12184: /index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-3092: /test.html: This might be interesting...
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ /connect.php?path=http://cirt.net/rfiinc.txt?: Potential PHP MySQL database connection string found.
+ OSVDB-3092: /test.php: This might be interesting...
+ 6544 items checked: 0 error(s) and 16 item(s) reported on remote host
+ End Time:           2014-01-10 00:48:23 (GMT5.5) (11 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Если вы хотите сканировать с другим номером порта, добавьте опцию «-p» [-port]. Например, я хочу выполнить сканирование IP 172.16.27.56 и TCP-порта 443.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Пример вывода
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject: /O=*.mid-day.com/OU=Domain Control Validated/CN=*.mid-day.com
                   Ciphers: DHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
+ Start Time:         2014-01-10 01:08:26 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Server leaks inodes via ETags, header found with file /, inode: 2817021, size: 5, mtime: 0x4d5123482b2e9
+ The anti-clickjacking X-Frame-Options header is not present.
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
+ Server is using a wildcard certificate: '*.mid-day.com'
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 6544 items checked: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2014-01-10 01:11:20 (GMT5.5) (174 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Вы также можете указать хосты, порты и протоколы, используя полный синтаксис URL, и они будут просканированы.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://172.16.27.56:80

Вы также можете сканировать любой веб-сайт. Например, здесь я просканировал сайт google.com.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://www.google.com
Пример вывода
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          173.194.38.177
+ Target Hostname:    www.google.com
+ Target Port:        80
+ Start Time:         2014-01-10 01:13:36 (GMT5.5)
---------------------------------------------------------------------------
+ Server: gws
+ Cookie PREF created without the httponly flag
+ Cookie NID created without the httponly flag
+ Uncommon header 'x-frame-options' found, with contents: SAMEORIGIN
+ Uncommon header 'x-xss-protection' found, with contents: 1; mode=block
+ Uncommon header 'alternate-protocol' found, with contents: 80:quic
+ Root page / redirects to: http://www.google.co.in/?gws_rd=cr&ei=xIrOUomsCoXBrAee34DwCQ
+ Server banner has changed from 'gws' to 'sffe' which may suggest a WAF, load balancer or proxy is in place
+ Uncommon header 'x-content-type-options' found, with contents: nosniff
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ File/dir '/groups/' in robots.txt returned a non-forbidden or redirect HTTP code (302)
….

Приведенная выше команда выполнит несколько http-запросов (т. е. более 2000 тестов) на веб-сервере.

Тестирование нескольких портов

Вы также можете выполнить сканирование нескольких портов в одном сеансе. Чтобы сканировать несколько портов на одном хосте, добавьте параметр «-p» [-port] и укажите список портов. Порты можно определить в виде диапазона (например, 80–443) или через запятую (например, 80,443). Например, я хочу просканировать порты 80 и 443 на хосте 172.16.27.56.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 80,443
Пример вывода
- Nikto v2.1.5
---------------------------------------------------------------------------
+ No web server found on cmsstage.mid-day.com:88
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        80
+ Start Time:         2014-01-10 20:38:26 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Retrieved x-powered-by header: PHP/5.3.3
+ The anti-clickjacking X-Frame-Options header is not present.

---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject: /O=*.mid-day.com/OU=Domain Control Validated/CN=*.mid-day.com
                   Ciphers: DHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
+ Start Time:         2014-01-10 20:38:36 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ All CGI directories 'found', use '-C none' to test none
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
.....

Использование прокси

Допустим, система, в которой работает Nikto, имеет доступ к целевому хосту только через HTTP-прокси, тест все равно можно выполнить двумя разными способами. Один из них использует файл nikto.conf, а другой способ — запустить непосредственно из командной строки.

Использование файла Nikto.conf

Откройте файл nikto.conf с помощью любого редактора командной строки.

[root@localhost nikto-2.1.5]# vi nikto.conf

Найдите переменную «PROXY» и раскомментируйте «#» в начале строк, как показано. Затем добавьте хост прокси, порт, пользователя прокси и пароль. Сохраните и закройте файл.

Proxy settings -- still must be enabled by -useproxy
PROXYHOST=172.16.16.37
PROXYPORT=8080
PROXYUSER=pg
PROXYPASS=pg

Теперь запустите Nikto, используя опцию «-useproxy». Обратите внимание, что все соединения будут передаваться через HTTP прокси.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Пример вывода
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2014-01-10 21:28:29 (GMT5.5)
---------------------------------------------------------------------------
+ Server: squid/2.6.STABLE6
+ Retrieved via header: 1.0 netserv:8080 (squid/2.6.STABLE6)
+ The anti-clickjacking X-Frame-Options header is not present.
+ Uncommon header 'x-squid-error' found, with contents: ERR_CACHE_ACCESS_DENIED 0
+ Uncommon header 'x-cache-lookup' found, with contents: NONE from netserv:8080
Использование командной строки

Чтобы запустить Nikto непосредственно из командной строки, используйте параметр «-useproxy», указав прокси в качестве аргумента.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
Пример вывода
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2014-01-10 21:34:51 (GMT5.5)
---------------------------------------------------------------------------
+ Server: squid/2.6.STABLE6
+ Retrieved via header: 1.0 netserv:8080 (squid/2.6.STABLE6)
+ The anti-clickjacking X-Frame-Options header is not present.
+ Uncommon header 'x-squid-error' found, with contents: ERR_CACHE_ACCESS_DENIED 0
+ Uncommon header 'x-cache-lookup' found, with contents: NONE from netserv:8080

Обновление Никто

Вы можете обновить Nikto до последних версий плагинов и баз данных автоматически, просто запустив команду «-update».

[root@localhost nikto-2.1.5]# perl nikto.pl -update

Если доступны новые обновления, вы увидите список загруженных новых обновлений.

+ Retrieving 'nikto_report_csv.plugin'
+ Retrieving 'nikto_headers.plugin'
+ Retrieving 'nikto_cookies.plugin'
+ Retrieving 'db_tests'
+ Retrieving 'db_parked_strings'
+ Retrieving 'CHANGES.txt'
+ CIRT.net message: Please submit Nikto bugs to http://trac2.assembla.com/Nikto_2/report/2

Вы также можете вручную загрузить и обновить плагины и базы данных Nikto с http://cirt.net/nikto/UPDATES/.

Справочные ссылки

Домашняя страница Никто