Vyhledávání na webu

Nikto – zranitelnost webové aplikace a CGI skener pro webové servery


Nikto Web Scanner je další dobrý nástroj pro arzenál administrátorů Linuxu. Jedná se o open source webový skener vydaný pod licencí GPL, který se používá k provádění komplexních testů na webových serverech pro více položek včetně více než 6500 potenciálně nebezpečných souborů/CGI .

Doporučená četba: WPSeku – Skener zranitelnosti k nalezení bezpečnostních problémů ve WordPressu

Napsali jej Chris Solo a David Lodge pro posouzení zranitelnosti, kontroluje zastaralé verze na 1250 webových serverech a přes 270 problémů specifických pro verzi. Také skenuje a hlásí zastaralý software webového serveru a zásuvné moduly.

Vlastnosti Nikdo Web Scanner

  1. Podporuje SSL
  2. Podporuje plnou HTTP proxy
  3. Podporuje text, HTML, XML a CSV pro ukládání zpráv.
  4. Vyhledejte více portů
  5. Může skenovat na více serverech přebíráním vstupů ze souborů, jako je výstup nmap
  6. Podpora LibWhisker IDS
  7. Dostatečně schopné identifikovat nainstalovaný software pomocí záhlaví, souborů a favicon
  8. Protokoly pro Metasploits
  9. Hlášení pro „neobvyklá“ záhlaví.
  10. Výčet uživatelů Apache a cgiwrap
  11. Ověřujte hostitele pomocí Basic a NTLM
  12. Skenování lze automaticky pozastavit v určený čas.

Požadavky na Nikdo

Systém se základní instalací Perl, Perl Modules a OpenSSL by měl umožnit spuštění Nikto. Byl důkladně testován na Windows, Mac OSX a různých distribucích Unix/Linux, jako je Red Hat, Debian, Ubuntu, BackTrack atd.

Instalace Nikdo Web Scanner na Linuxu

Většina dnešních systémů Linux je dodávána s předinstalovanými balíčky Perl, Perl Modules a OpenSSL. Pokud nejsou zahrnuty, můžete je nainstalovat pomocí výchozího nástroje správce systémových balíčků s názvem yum nebo apt-get.

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

Dále naklonujte nejnovější stabilní zdrojové soubory Nikto z jeho úložiště Github, přesuňte se do adresáře Nikto/programs/ a spusťte jej pomocí perlu:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Ukázkový výstup
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.

Hostitel volby vyžaduje argument“ jasně říká, že jsme při provádění testu nezahrnuli potřebné parametry. Potřebujeme tedy přidat základní nezbytný parametr, abychom mohli provést testovací provoz.

Základní testování

Základní kontrola vyžaduje hostitele, na kterého chcete cílit. Pokud není nic zadáno, standardně kontroluje port 80. Hostitel může být buď název hostitele nebo adresa IP systému. Hostitele můžete určit pomocí možnosti „-h “.

Chci například provést skenování adresy IP 172.16.27.56 na portu TCP 80.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Ukázkový výstup
- 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

Pokud chcete skenovat na jiném čísle portu, přidejte možnost „-p “ [-port]. Chci například provést skenování adresy IP 172.16.27.56 na portu TCP 443.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Ukázkový výstup
- 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

Můžete také zadat hostitele, porty a protokoly pomocí úplné syntaxe URL a budou zkontrolovány.

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

Můžete také skenovat jakýkoli web. Zde jsem například skenoval na google.com.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://www.google.com
Ukázkový výstup
- 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)
….

Výše uvedený příkaz provede na webovém serveru množství požadavků http (tj. více než 2000 testů).

Testování více portů

Můžete také provádět skenování více portů ve stejné relaci. Chcete-li skenovat více portů na stejném hostiteli, přidejte možnost „-p“ [-port] a zadejte seznam portů. Porty lze definovat jako rozsah (tj. 80–443) nebo jako oddělené čárkou (tj. 80 443). Například chci skenovat porty 80 a 443 na hostiteli 172.16.27.56.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 80,443
Ukázkový výstup
- 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.
.....

Pomocí proxy

Řekněme, že systém, kde běží Nikto, má přístup k cílovému hostiteli pouze prostřednictvím HTTP proxy, test lze přesto provést dvěma různými způsoby. Jedním z nich je použití souboru nikto.conf a dalším způsobem je spuštění přímo z příkazového řádku.

Pomocí souboru Nikto.conf

Otevřete soubor nikto.conf pomocí libovolného editoru příkazového řádku.

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

Vyhledejte proměnnou „PROXY“ a odkomentujte „#“ na začátku řádků, jak je znázorněno. Poté přidejte hostitel proxy, port, uživatele proxy a heslo. Uložte a zavřete soubor.

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

Nyní spusťte Nikto pomocí možnosti „-useproxy“. Vezměte prosím na vědomí, že všechna připojení budou přenášena prostřednictvím HTTP proxy.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Ukázkový výstup
- 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
Použití příkazového řádku

Chcete-li spustit Nikto přímo z příkazového řádku pomocí možnosti „-useproxy“ nastavením proxy jako argumentu.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
Ukázkový výstup
- 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

Aktualizace Nikto

Nikto můžete aktualizovat na nejnovější pluginy a databáze automaticky, stačí spustit příkaz „-update“.

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

Pokud jsou k dispozici nové aktualizace, zobrazí se seznam nových stažených aktualizací.

+ 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

Zásuvné moduly a databáze Nikto si také můžete ručně stáhnout a aktualizovat z http://cirt.net/nikto/UPDATES/.

Referenční odkazy

Domovská stránka Nikdo