Nikto – en sårbarhet i nettapplikasjoner og CGI-skanner for webservere


Nikto Web Scanner er et annet godt å ha verktøy for enhver Linux-administrators arsenal. Det er en åpen kildekode-nettskanner utgitt under GPL-lisensen, som brukes til å utføre omfattende tester på nettservere for flere elementer, inkludert over 6500 potensielt farlige filer/CGI-er .

Foreslått lesing: WPSeku – En sårbarhetsskanner for å finne sikkerhetsproblemer i WordPress

Den er skrevet av Chris Solo og David Lodge for vurdering av Sårbarhet, den sjekker for utdaterte versjoner over 1250 nettservere og over 270 versjonsspesifikke problemer. Den skanner og rapporterer også for utdatert webserverprogramvare og plugins.

Funksjoner til Nikto Web Scanner

  1. Støtter SSL
  2. Støtter full HTTP-proxy
  3. Støtter tekst, HTML, XML og CSV for å lagre rapporter.
  4. Skann etter flere porter
  5. Kan skanne på flere servere ved å ta inndata fra filer som nmap-utdata
  6. Støtt LibWhisker IDS
  7. I stand til å identifisere installert programvare med overskrifter, filer og favorittikoner
  8. Logger for Metasploits
  9. Rapporter for "uvanlige" overskrifter.
  10. Apache og cgiwrap brukeroppregning
  11. Autentiser verter med Basic og NTLM
  12. Skanninger kan stanses automatisk på et spesifisert tidspunkt.

Nikto-krav

Et system med grunnleggende Perl, Perl-moduler, OpenSSL-installasjon bør gjøre det mulig for Nikto å kjøre. Den har blitt grundig testet på Windows, Mac OSX og ulike Unix/Linux-distribusjoner som for eksempel Red Hat, Debian, Ubuntu, BackTrack osv.

Installasjon av Nikto Web Scanner på Linux

De fleste av dagens Linux-systemer leveres med forhåndsinstallerte pakker Perl, Perl-moduler og OpenSSL. Hvis de ikke er inkludert, kan du installere dem ved å bruke standard systempakkebehandlingsverktøy kalt yum eller apt-get.

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

Deretter kloner du de siste stabile Nikto-kildefilene fra Github-depotet, flytt inn i Nikto/programs/-katalogen og kjør den med perl:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Eksempelutgang
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.

«Alternativverten krever et argument» forteller tydelig at vi ikke inkluderte de nødvendige parameterne mens vi gjorde en test. Så vi må legge til en grunnleggende nødvendig parameter for å utføre en testkjøring.

Grunnleggende testing

Den grunnleggende skanningen krever en vert du vil målrette mot, som standard skanner den port 80 hvis ingenting er spesifisert. Verten kan enten være et vertsnavn eller en IP-adresse til et system. Du kan spesifisere en vert ved å bruke "-h "-alternativet.

For eksempel vil jeg gjøre en skanning på en IP 172.16.27.56 på TCP-port 80.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Eksempelutgang
- 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

Hvis du vil skanne på et annet portnummer, legger du til alternativet «-p » [-port]. For eksempel vil jeg gjøre en skanning på IP 172.16.27.56 på TCP-port 443.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Eksempelutgang
- 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

Du kan også spesifisere verter, porter og protokoller ved å bruke en full URL-syntaks, og den vil bli skannet.

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

Du kan også skanne hvilken som helst nettside. For eksempel, her gjorde jeg en skanning på google.com.

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

Kommandoen ovenfor vil utføre en haug med http-forespørsler (dvs. mer enn 2000 tester) på webserveren.

Testing av flere porter

Du kan også utføre skanning av flere porter i samme økt. For å skanne flere porter på samme vert, legg til alternativet «-p» [-port] og spesifiser listen over porter. Porter kan defineres som et område (dvs. 80-443), eller som et kommaseparert (dvs. 80 443). For eksempel vil jeg skanne portene 80 og 443 på verten 172.16.27.56.

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

Bruke en proxy

La oss si at et system der Nikto kjører bare har tilgang til målverten via en HTTP-proxy, testen kan fortsatt utføres på to forskjellige måter. En bruker nikto.conf-filen og en annen måte er å kjøre direkte fra kommandolinjen.

Bruker Nikto.conf-filen

Åpne nikto.conf-filen ved å bruke et hvilket som helst kommandolinjeredigeringsprogram.

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

Søk etter variabelen «PROXY» og fjern kommentaren «#» fra begynnelsen av linjene som vist. Legg deretter til proxy-verten, porten, proxy-brukeren og passordet. Lagre og lukk filen.

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

Nå, utfør Nikto ved å bruke «-useproxy»-alternativet. Vær oppmerksom på at alle tilkoblinger vil bli videresendt via HTTP-proxyen.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Eksempelutgang
- 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
Bruke kommandolinjen

For å kjøre Nikto direkte fra kommandolinjen ved å bruke «-useproxy»-alternativet ved å sette proxyen som argument.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
Eksempelutgang
- 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

Oppdaterer Nikto

Du kan oppdatere Nikto til de nyeste pluginene og databasene automatisk, bare kjør kommandoen «-update».

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

Hvis nye oppdateringer er tilgjengelige, vil du se en liste over nye oppdateringer som er lastet ned.

+ 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

Du kan også manuelt laste ned og oppdatere Nikto-plugins og databaser fra http://cirt.net/nikto/UPDATES/.

Referanselenker

Niktos hjemmeside