Zoeken op website

Nikto - Een kwetsbaarheids- en CGI-scanner voor webapplicaties voor webservers


Nikto Web Scanner is een ander handig hulpmiddel voor het arsenaal van elke Linux-beheerder. Het is een open source-webscanner die is uitgegeven onder de GPL-licentie en die wordt gebruikt om uitgebreide tests uit te voeren op webservers voor meerdere items, waaronder meer dan 6500 potentieel gevaarlijke bestanden/CGI's .

Aanbevolen leesmateriaal: WPSeku – Een kwetsbaarheidsscanner om beveiligingsproblemen in WordPress te vinden

Het is geschreven door Chris Solo en David Lodge voor beoordeling van kwetsbaarheid, het controleert op verouderde versies op 1250 webservers en meer dan 270 versiespecifieke problemen. Het scant en rapporteert ook op verouderde webserversoftware en plug-ins.

Kenmerken van Nikto Webscanner

  1. Ondersteunt SSL
  2. Ondersteunt volledige HTTP-proxy
  3. Ondersteunt tekst, HTML, XML en CSV om rapporten op te slaan.
  4. Scan naar meerdere poorten
  5. Kan op meerdere servers scannen door invoer uit bestanden zoals nmap-uitvoer te halen
  6. Ondersteuning van LibWhisker-IDS
  7. Capabel genoeg om geïnstalleerde software te identificeren met headers, bestanden en favicons
  8. Logboeken voor metasploits
  9. Rapporten voor “ongebruikelijke” headers.
  10. Apache- en cgiwrap-gebruikersopsomming
  11. Authenticeer hosts met Basic en NTLM
  12. Scans kunnen op een bepaald tijdstip automatisch worden gepauzeerd.

Nikto-vereisten

Een systeem met een standaard Perl, Perl Modules, OpenSSL installatie zou ervoor moeten zorgen dat Nikto kan worden uitgevoerd. Het is grondig getest op Windows, Mac OSX en verschillende Unix/Linux distributies zoals Red Hat, Debian, Ubuntu, BackTrack, enz.

Installatie van Nikto Webscanner op Linux

De meeste hedendaagse Linux-systemen worden geleverd met vooraf geïnstalleerde Perl, Perl Modules en OpenSSL pakketten. Indien niet inbegrepen, kunt u ze installeren met behulp van het standaard hulpprogramma voor systeempakketbeheer genaamd yum of apt-get.

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

Kloon vervolgens de nieuwste stabiele Nikto bronbestanden uit de Github-repository, ga naar de map Nikto/programs/ en voer het uit met perl:

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

De “Optiehost vereist een argument” geeft duidelijk aan dat we de benodigde parameters niet hebben opgenomen tijdens het uitvoeren van een test. We moeten dus een noodzakelijke basisparameter toevoegen om een testrun uit te voeren.

Basis testen

Voor de basisscan is een host nodig die u wilt targeten. Standaard wordt poort 80 gescand als er niets is opgegeven. De host kan een hostnaam of een IP-adres van een systeem zijn. U kunt een host opgeven met de optie “-h”.

Ik wil bijvoorbeeld een scan uitvoeren op een IP 172.16.27.56 op TCP-poort 80.

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

Als u op een ander poortnummer wilt scannen, voeg dan de optie “-p” [-port] toe. Ik wil bijvoorbeeld een scan uitvoeren op IP 172.16.27.56 op TCP-poort 443.

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

U kunt ook hosts, poorten en protocollen opgeven met behulp van een volledige URL-syntaxis, waarna deze wordt gescand.

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

U kunt ook elke website scannen. Hier heb ik bijvoorbeeld een scan gemaakt op google.com.

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

De bovenstaande opdracht voert een aantal http-verzoeken uit (d.w.z. meer dan 2000 tests) op de webserver.

Meerdere poorttesten

U kunt tijdens dezelfde sessie ook meerdere poorten scannen. Om meerdere poorten op dezelfde host te scannen, voegt u de optie “-p” [-port] toe en specificeert u de lijst met poorten. Poorten kunnen worden gedefinieerd als een bereik (d.w.z. 80-443), of als een komma gescheiden (d.w.z. 80.443). Ik wil bijvoorbeeld de poorten 80 en 443 op de host 172.16.27.56 scannen.

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

Een proxy gebruiken

Laten we zeggen dat een systeem waarop Nikto draait alleen toegang heeft tot de doelhost via een HTTP proxy, de test kan nog steeds op twee verschillende manieren worden uitgevoerd. De ene gebruikt het bestand nikto.conf en een andere manier is om rechtstreeks vanaf de opdrachtregel te starten.

Het Nikto.conf-bestand gebruiken

Open het bestand nikto.conf met een opdrachtregeleditor.

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

Zoek naar de variabele ‘PROXY’ en verwijder het commentaar ‘#’ vanaf het begin van de regels, zoals weergegeven. Voeg vervolgens de proxyhost, poort, proxygebruiker en wachtwoord toe. Sla het bestand op en sluit het.

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

Voer nu Nikto uit met de optie “-useproxy”. Houd er rekening mee dat alle verbindingen worden doorgegeven via deHTTP-proxy.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Voorbeelduitvoer
- 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
Met behulp van de opdrachtregel

Om Nikto rechtstreeks vanaf de opdrachtregel uit te voeren, gebruikt u de optie “-useproxy” door de proxy als argument in te stellen.

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

Je kunt Nikto automatisch updaten naar de nieuwste plug-ins en databases door simpelweg de opdracht “-update” uit te voeren.

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

Als er nieuwe updates beschikbaar zijn, ziet u een lijst met nieuwe gedownloade updates.

+ 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

U kunt Nikto-plug-ins en databases ook handmatig downloaden en bijwerken vanaf http://cirt.net/nikto/UPDATES/.

Referentiekoppelingen

Nikto-startpagina