Nikto - tīmekļa lietojumprogrammu ievainojamība un CGI skeneris tīmekļa serveriem


Nikto tīmekļa skeneris ir vēl viens labs rīks jebkura Linux administratora arsenālam. Tas ir atvērtā koda tīmekļa skeneris, kas izlaists saskaņā ar GPL licenci un ko izmanto, lai veiktu visaptverošus testus tīmekļa serveros vairākiem vienumiem, tostarp vairāk nekā 6500 potenciāli bīstamiem failiem/CGI.

To raksta Kriss Solo un Deivids Lods, lai veiktu ievainojamības novērtējumu. Tas pārbauda novecojušas versijas, kas pārsniedz 1250 tīmekļa serverus, un vairāk nekā 270 versijas specifiskas problēmas. Tas arī skenē un ziņo par novecojušu tīmekļa servera programmatūru un spraudņiem.

Nikto Web Scanner funkcijas

  1. Atbalsta SSL
  2. Atbalsta pilnu HTTP starpniekserveri
  3. Atbalsta tekstu, HTML, XML un CSV, lai saglabātu pārskatus.
  4. Meklējiet vairākas ostas
  5. Var skenēt vairākos serveros, ņemot datus no failiem, piemēram, nmap izvades
  6. Atbalstiet LibWhisker IDS
  7. Pietiekami spējīgs identificēt instalēto programmatūru ar galvenēm, failiem un favikoniem
  8. Metasploits žurnāli
  9. Pārskati par neparastām galvenēm.
  10. Apache un cgiwrap lietotāju uzskaitījums
  11. Autentificēt resursdatorus ar Basic un NTLM
  12. Noteiktā laikā skenēšanu var automātiski apturēt.

Nikto prasības

Sistēmai ar pamata Perl, Perl moduļiem, OpenSSL instalēšanu vajadzētu ļaut Nikto darboties. Tas ir rūpīgi pārbaudīts operētājsistēmās Windows, Mac OSX un dažādos Unix/Linux izplatījumos, piemēram, Red Hat, Debian, Ubuntu, BackTrack utt.

Nikto Web Scanner instalēšana Linux

Lielākā daļa mūsdienu Linux sistēmu ir aprīkotas ar iepriekš instalētām pakotnēm Perl, Perl Modules un OpenSSL. Ja tās nav iekļautas, varat tās instalēt, izmantojot noklusējuma sistēmas pakotņu pārvaldnieka utilītu ar nosaukumu yum vai apt-get.

 yum install perl perl-Net-SSLeay openssl
 apt-get install perl openssl libnet-ssleay-perl

Pēc tam klonējiet jaunākos stabilos Nikto avota failus no sava Github krātuves, pārejiet uz Nikto/programs/direktoriju un palaidiet to, izmantojot 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.

“Opcijas resursdatoram ir nepieciešams arguments” skaidri norāda, ka, veicot testu, mēs neiekļāvām nepieciešamos parametrus. Tātad, testa veikšanai mums jāpievieno pamata nepieciešamais parametrs.

Pamata skenēšanai nepieciešams resursdators, kuru vēlaties atlasīt, pēc noklusējuma tas skenē 80 portu, ja nekas nav norādīts. Saimnieks var būt gan sistēmas resursdators, gan IP adrese. Varat norādīt resursdatoru, izmantojot opciju “-h”.

Piemēram, es vēlos veikt skenēšanu uz IP 172.16.27.56 TCP 80. portā.

 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

Ja vēlaties skenēt ar citu porta numuru, pievienojiet opciju “-p” [-port]. Piemēram, es vēlos veikt skenēšanu uz IP 172.16.27.56 TCP portā 443.

 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

Izmantojot pilnu URL sintaksi, varat arī norādīt resursdatorus, porti un protokolus, un tie tiks skenēti.

 perl nikto.pl -h http://172.16.27.56:80

Varat arī skenēt jebkuru vietni. Piemēram, šeit es skenēju vietnē google.com.

 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)
….

Iepriekš minētā komanda tīmekļa serverī veiks virkni http pieprasījumu (t.i., vairāk nekā 2000 testu).

Tajā pašā sesijā varat veikt arī vairāku ostu skenēšanu. Lai skenētu vairākas ostas vienā resursdatorā, pievienojiet opciju “-p” [-port] un norādiet ostu sarakstu. Ports var tikt definēts kā diapazons (t.i., 80–443) vai kā atdalīts komats (t.i., 80 443). Piemēram, es gribu skenēt 80. un 443. portu resursdatorā 172.16.27.56.

 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.
.....

Pieņemsim, ka sistēmai, kurā darbojas Nikto, ir piekļuve mērķa resursdatoram tikai caur HTTP starpniekserveri, testu joprojām var veikt, izmantojot divus dažādus veidus. Viens no tiem izmanto failu nikto.conf, un cits veids ir palaist tieši no komandrindas.

Atveriet failu nikto.conf, izmantojot jebkuru komandrindas redaktoru.

 vi nikto.conf

Meklējiet mainīgo “PROXY” un no rindiņu sākuma noņemiet komentāru “#”, kā parādīts. Pēc tam pievienojiet starpniekserveri, portu, starpniekservera lietotāju un paroli. Saglabājiet un aizveriet failu.

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

Tagad izpildiet Nikto, izmantojot opciju “-useproxy”. Lūdzu, ņemiet vērā, ka visi savienojumi tiks pārsūtīti, izmantojot HTTP starpniekserveri.

[email  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

Lai palaistu Nikto tieši no komandrindas, izmantojot opciju “-useproxy”, kā argumentu iestatot starpniekserveri.

[email  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

Jūs varat automātiski atjaunināt Nikto uz jaunākajiem spraudņiem un datu bāzēm, vienkārši palaidiet komandu “-update”.

 perl nikto.pl -update

Ja ir pieejami jauni atjauninājumi, tiks parādīts lejupielādēto jauno atjauninājumu saraksts.

+ 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

Varat arī manuāli lejupielādēt un atjaunināt Nikto spraudņus un datu bāzes no vietnes http://cirt.net/nikto/UPDATES/.

Atsauces saites

Nikto mājas lapa