Nikto - Web-sovellusten haavoittuvuus ja CGI-skanneri verkkopalvelimille


Nikto Web Scanner on toinen hyvä työkalu minkä tahansa Linux-järjestelmänvalvojan arsenaaliin. Se on avoimen lähdekoodin verkkoskanneri, joka on julkaistu GPL-lisenssillä ja jota käytetään suorittamaan kattavia testejä verkkopalvelimilla useille kohteille, mukaan lukien yli 6500 mahdollisesti vaarallista tiedostoa/CGI. .

Suositeltu luku: WPSeku – haavoittuvuustarkistus WordPressin tietoturvaongelmien etsimiseen

Sen ovat kirjoittaneet Chris Solo ja David Lodge haavoittuvuuden arviointia varten. Se tarkistaa vanhentuneiden versioiden varalta yli 1250 verkkopalvelimen ja yli 270 versiokohtaisia ongelmia. Se myös skannaa ja raportoi vanhentuneiden verkkopalvelinohjelmistojen ja -laajennusten varalta.

Nikto Web Scannerin ominaisuudet

  1. Tukee SSL:ää
  2. Tukee täyttä HTTP-välityspalvelinta
  3. Tukee tekstiä, HTML:ää, XML:ää ja CSV:tä raporttien tallentamiseen.
  4. Etsi useita portteja
  5. Voi skannata useilla palvelimilla ottamalla syötteitä tiedostoista, kuten nmap-tulosta
  6. Tuki LibWhisker IDS
  7. Riittävän kyky tunnistaa asennetut ohjelmistot otsikoista, tiedostoista ja faviconeista
  8. Metasploits-lokit
  9. Raportit "epätavallisista" otsikoista.
  10. Apache- ja cgiwrap-käyttäjien luettelo
  11. Todenna isännät Basicilla ja NTLM:llä
  12. Skannaukset voidaan keskeyttää automaattisesti tiettyyn aikaan.

Nikto Vaatimukset

Järjestelmän, jossa on perusasennus Perl, Perl-moduulit ja OpenSSL, pitäisi mahdollistaa Nikton suorittaminen. Se on testattu perusteellisesti Windowsissa, Mac OSX:ssä ja useissa Unix/Linux-jakeluissa, kuten Red. Hat, Debian, Ubuntu, BackTrack jne.

Nikto Web Scannerin asennus Linuxiin

Useimmissa tämän päivän Linux-järjestelmissä on esiasennetut Perl-, Perl-moduulit ja OpenSSL-paketit. Jos niitä ei ole mukana, voit asentaa ne käyttämällä oletusarvoista järjestelmän pakettien hallintaohjelmaa yum tai apt-get.

Red Hatissa/CentOS:ssä/Fedorassa
[root@tecmint ]# yum install perl perl-Net-SSLeay openssl
Debian/Ubuntu/Linux Mint
[root@tecmint ]# apt-get install perl openssl libnet-ssleay-perl

Seuraavaksi kloonaa uusimmat vakaat Nikto-lähdetiedostot sen Github-arkistosta, siirry Nikto/programs/-hakemistoon ja suorita se perl-komennolla:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Näytelähtö
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.

"Vaihtoehtoisäntä vaatii argumentin" kertoo selvästi, että emme sisällyttäneet tarvittavia parametreja testin aikana. Joten meidän on lisättävä tarvittava perusparametri testiajon suorittamiseksi.

Perustestaus

Perustarkistus vaatii isännän, johon haluat kohdistaa. Oletuksena se tarkistaa portin 80, jos mitään ei ole määritetty. Isäntä voi olla joko järjestelmän isäntänimi tai IP-osoite. Voit määrittää isännän käyttämällä -h-vaihtoehtoa.

Haluan esimerkiksi tehdä skannauksen IP-osoitteella 172.16.27.56 TCP-portissa 80.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Näytelähtö
- 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

Jos haluat skannata toisella porttinumerolla, lisää "-p " [-port] -vaihtoehto. Haluan esimerkiksi tehdä skannauksen IP-osoitteella 172.16.27.56 TCP-portissa 443.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Näytelähtö
- 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

Voit myös määrittää isännät, portit ja protokollat käyttämällä täydellistä URL-syntaksia, ja se tarkistetaan.

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

Voit myös skannata minkä tahansa verkkosivuston. Esimerkiksi tässä tein skannauksen osoitteessa google.com.

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

Yllä oleva komento suorittaa joukon http-pyyntöjä (eli yli 2000 testiä) verkkopalvelimella.

Useiden porttien testaus

Voit myös suorittaa useiden porttien skannauksen saman istunnon aikana. Jos haluat skannata useita saman isäntäportteja, lisää "-p" [-port] -vaihtoehto ja määritä porttiluettelo. Portit voidaan määrittää alueiksi (esim. 80-443) tai pilkuilla erotettuina (esim. 80 443). Haluan esimerkiksi tarkistaa palvelimen 172.16.27.56 portit 80 ja 443.

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

Välityspalvelimen käyttäminen

Oletetaan, että järjestelmällä, jossa Nikto on käynnissä, on pääsy kohdeisäntään vain HTTP-välityspalvelimen kautta. Testi voidaan silti suorittaa kahdella eri tavalla. Toinen tapa käyttää nikto.conf-tiedostoa ja toinen tapa on ajaa suoraan komentoriviltä.

Nikto.conf-tiedoston käyttäminen

Avaa nikto.conf-tiedosto millä tahansa komentorivieditorilla.

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

Etsi muuttuja PROXY ja poista #-kommentti rivien alusta kuvan osoittamalla tavalla. Lisää sitten välityspalvelimen isäntä, portti, välityspalvelimen käyttäjä ja salasana. Tallenna ja sulje tiedosto.

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

Suorita nyt Nikto käyttämällä -useproxy-vaihtoehtoa. Huomaa, että kaikki yhteydet välitetään HTTP -välityspalvelimen kautta.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Näytelähtö
- 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
Komentorivin käyttö

Suorita Nikto suoraan komentoriviltä käyttämällä -useproxy-vaihtoehtoa asettamalla välityspalvelin argumentiksi.

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

Päivitetään Niktoa

Voit päivittää Nikton uusimpiin laajennuksiin ja tietokantoihin automaattisesti suorittamalla -update-komennon.

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

Jos uusia päivityksiä on saatavilla, näet luettelon uusista ladatuista päivityksistä.

+ 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

Voit myös ladata ja päivittää Nikto-laajennuksia ja tietokantoja manuaalisesti osoitteesta http://cirt.net/nikto/UPDATES/.

Viitelinkit

Nikton kotisivut