Nikto - Web Sunucuları için Bir Web Uygulaması Güvenlik Açığı ve CGI Tarayıcısı


Nikto Web Scanner herhangi bir Linux yöneticisinin cephaneliğinde bulunabilecek başka bir iyi araçtır. Bu, 6500'den fazla potansiyel olarak tehlikeli dosya/CGI'ler de dahil olmak üzere birden fazla öğe için Web sunucularında kapsamlı testler gerçekleştirmek üzere kullanılan, GPL lisansı altında yayımlanan bir Açık kaynak web tarayıcısıdır. .

Önerilen Okuma: WPSeku – WordPress'teki Güvenlik Sorunlarını Bulan Bir Güvenlik Açığı Tarayıcısı

Chris Solo ve David Lodge tarafından Güvenlik Açığı değerlendirmesi için yazılmıştır, 1250 Web sunucusundaki eski sürümleri kontrol eder ve 270'in üzerinde sürüme özgü sorunlar. Ayrıca güncel olmayan web sunucusu yazılımı ve eklentilerini de tarar ve raporlar.

Nikto Web Tarayıcısının Özellikleri

  1. SSL'yi destekler
  2. Tam HTTP proxy'yi destekler
  3. Raporları kaydetmek için metin, HTML, XML ve CSV'yi destekler.
  4. Birden fazla bağlantı noktasını tarayın
  5. Nmap çıktısı gibi dosyalardan girdi alarak birden fazla sunucuda tarama yapabilir
  6. LibWhisker kimliklerini destekleyin
  7. Yüklü yazılımı başlıklar, dosyalar ve faviconlarla tanımlayacak kadar yetenekli
  8. Metasploit günlükleri
  9. “Olağandışı” başlıklara ilişkin raporlar.
  10. Apache ve cgiwrap kullanıcı numaralandırması
  11. Ana bilgisayarların kimliğini Basic ve NTLM ile doğrulayın
  12. Taramalar belirli bir zamanda Otomatik olarak duraklatılabilir.

Nikto Gereksinimleri

Temel Perl, Perl Modülleri ve OpenSSL kurulumuna sahip bir sistem, Nikto'nun çalışmasına olanak tanımalıdır. Windows, Mac OSX ve Red gibi çeşitli Unix/Linux dağıtımlarında kapsamlı bir şekilde test edilmiştir. Hat, Debian, Ubuntu, BackTrack vb.

Nikto Web Tarayıcısının Linux'a Kurulumu

Günümüzün Linux sistemlerinin çoğu önceden yüklenmiş Perl, Perl Modülleri ve OpenSSL paketleriyle birlikte gelir. Dahil değilse, yum veya apt-get adı verilen varsayılan sistem paketi yöneticisi yardımcı programını kullanarak bunları yükleyebilirsiniz.

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

Daha sonra, Github deposundan en son kararlı Nikto kaynak dosyalarını kopyalayın, Nikto/programs/ dizinine taşıyın ve Perl kullanarak çalıştırın:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Örnek Çıktı
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.

"Seçenek ana bilgisayarı bir bağımsız değişken gerektirir", test yaparken gerekli parametreleri eklemediğimizi açıkça söylüyor. Bu nedenle, bir test çalıştırması yapmak için gerekli temel bir parametreyi eklememiz gerekiyor.

Temel Test

Temel tarama, hedeflemek istediğiniz bir ana bilgisayarı gerektirir; hiçbir şey belirtilmemişse varsayılan olarak 80 bağlantı noktasını tarar. Ana makine, bir sistemin ana bilgisayar adı veya IP Adresi olabilir. “-h” seçeneğini kullanarak bir ana bilgisayar belirleyebilirsiniz.

Örneğin, 80 TCP bağlantı noktasındaki 172.16.27.56 IP'sinde tarama yapmak istiyorum.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Örnek Çıktı
- 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

Farklı bir port numarası üzerinden tarama yapmak istiyorsanız “-p ” [-port] seçeneğini ekleyin. Örneğin, 443 TCP bağlantı noktasındaki 172.16.27.56 IP'sinde tarama yapmak istiyorum.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Örnek Çıktı
- 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

Ayrıca tam bir URL söz dizimi kullanarak ana makineler, bağlantı noktaları ve protokolleri de belirtebilirsiniz; taranacaktır.

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

Ayrıca herhangi bir web sitesini de tarayabilirsiniz. Örneğin burada google.com'da bir tarama yaptım.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://www.google.com
Örnek Çıktı
- 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)
….

Yukarıdaki komut, web sunucusunda bir dizi http isteği (yani 2000'den fazla test) gerçekleştirecektir.

Çoklu Bağlantı Noktası Testi

Aynı oturumda birden fazla bağlantı noktası taraması da gerçekleştirebilirsiniz. Aynı ana bilgisayardaki birden fazla bağlantı noktasını taramak için “-p” [-port] seçeneğini ekleyin ve bağlantı noktalarının listesini belirtin. Bağlantı noktaları bir aralık (ör. 80-443) veya virgülle ayrılmış (ör. 80,443) olarak tanımlanabilir. Örneğin, 172.16.27.56 ana bilgisayarındaki 80 ve 443 bağlantı noktalarını taramak istiyorum.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 80,443
Örnek Çıktı
- 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.
.....

Proxy Kullanma

Diyelim ki Nikto'nun çalıştığı bir sistem, hedef ana makineye yalnızca HTTP proxy aracılığıyla erişebiliyor; test yine de iki farklı yol kullanılarak gerçekleştirilebilir. Bunlardan biri nikto.conf dosyasını kullanmak, diğer yol ise doğrudan komut satırından çalıştırmaktır.

Nikto.conf Dosyasını Kullanma

Herhangi bir komut satırı düzenleyicisini kullanarak nikto.conf dosyasını açın.

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

"PROXY" değişkenini arayın ve gösterildiği gibi satırların başındaki "#" işaretini kaldırın. Ardından proxy ana bilgisayarını, bağlantı noktasını, proxy kullanıcısını ve şifreyi ekleyin. Dosyayı kaydedip kapatın.

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

Şimdi “-useproxy” seçeneğini kullanarak Nikto'yu yürütün. Lütfen tüm bağlantıların HTTP proxy'si aracılığıyla aktarılacağını unutmayın.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Örnek Çıktı
- 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
Komut Satırını Kullanma

Bağımsız değişken olarak proxy'yi ayarlayarak "-useproxy" seçeneğini kullanarak Nikto'yu doğrudan komut satırından çalıştırmak için.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
Örnek Çıktı
- 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 güncelleniyor

Nikto'yu en son eklentilere ve veritabanlarına otomatik olarak güncelleyebilirsiniz, bunun için "-update" komutunu çalıştırmanız yeterlidir.

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

Yeni güncellemeler mevcutsa, indirilen yeni güncellemelerin bir listesini göreceksiniz.

+ 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

Ayrıca Nikto eklentilerini ve veritabanlarını http://cirt.net/nikto/UPDATES/ adresinden manuel olarak indirebilir ve güncelleyebilirsiniz.

Referans Bağlantıları

Nikto Ana Sayfası