Introduzione

Nikto è uno scanner di vulnerabilità web open source basato su Perl che può scoprire ogni potenziale minaccia sul tuo server web, inclusi file e programmi non sicuri, server e programmi obsoleti, configurazioni errate del server e del software e molto altro.

Nikto può funzionare su quasi tutti i sistemi operativi con interprete Perl installato. Supporta SSL, proxy, autenticazione host, codifica di attacco, evation IDS ecc.

Questa guida illustra come installare e utilizzare Nikto su Ubuntu 18.04.

Se il vostro intento è installare Nikto su di un server in remoto continuate a leggere, altrimenti se volete installare Nikto sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Prerequisiti

Per seguire questo tutorial, avrai bisogno di:

Installare Nikto

L'installazione di Nikto è piuttosto semplice poiché il pacchetto è disponibile sui repository predefiniti di Ubuntu 18.04. Quindi, esegui i comandi seguenti per installare Nikto.

Aggiornare la lista di pacchetti disponibili:

sudo apt update

Aggiornare i pacchetti disponibili:

sudo apt upgrade -y

Installare Nikto:

sudo apt-get install nikto -y

Una volta terminata l'installazione, Nikto è pronto all'uso.

Utilizzo di base di Nikto

La sintassi di base della riga di comando di Nikto è la seguente:

nikto [options...]

Se eseguito senza alcuna opzione da riga di comando, mostra una descrizione di base con varie opzioni disponibili:

nikto

Dovreste ricevere un messaggio di output simile al seguente:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ ERROR: No host specified

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

Avviare di Nikto Web Scan

Il comando base di Nikto richiede solo un host. L'host di destinazione (target) può essere specificato con l' opzione -h o -host , ad esempio per scansionare un server web il cui indirizzo IP è 192.168.99.99 , eseguire Nikto come segue:

nikto -host 192.168.99.99

Nikto esegue la scansione della porta 80 per impostazione predefinita. Tuttavia, se il server Web è in esecuzione su una porta diversa, è necessario specificare la porta utilizzando l'opzione -p o -port. Quindi:

nikto -h 192.168.99.99 -p 8080

È possibile specificare più porte separandole con una virgola.

nikto -h 192.168.99.99 -p 8080,8888

Puoi anche specificare un intervallo di porte nel formato port1-port, ad esempio:

nikto -h 192.168.99.99 -p 8080-8888

Invece di utilizzare l'indirizzo IP per specificare l'host di destinazione, è possibile utilizzare ad esempio anche gli URL:

nikto -h test.esempio.com
nikto -h https://test.esempio.com

Puoi anche specificare la porta quando usi l'URL:

nikto -h test.esempio.com -p 8080
nikto -h https://test.esempio.com -p 8443

Oppure:

nikto -h test.esempio.com:8080
nikto -h test.esempio.com:8443/

Nella misura in cui è possibile specificare host di destinazione mediante l' opzione -p, è anche possibile specificare un file contenente un elenco di host di destinazione uno per riga. Ad esempio, il file dovrebbe contenere i target nel seguente formato:

192.168.99.99:8888
192.168.99.99
https://test.esempio.com:443/

Supponiamo che il file si chiami target-host Per eseguire la scansione di questi host contemporaneamente, eseguire il comando seguente:

nikto -h target-host

È anche possibile eseguire la scansione degli host utilizzando Nmap e passare l'output a nikto. Ad esempio, per cercare la porta aperta 80 in una rete digitare:

nmap -p80 192.168.99.99/24 -oG - | nikto -h -

Se vuoi usare un server proxy, è possibile utilizzare l'opzione -useproxy . Puoi impostare i dettagli del proxy direttamente nel file di configurazione di Nikto /etc/nikto/config.txt, oppure puoi impostarlo da riga di comando.

Aprire il file di configurazione di Nikto con il proprio editor di testo preferito, qui utilizzeremo nano:

sudo nano /etc/nikto/config.txt

Aggiungere o modificare i seguenti parametri, inserendo i propri dati:

PROXYHOST=192.168.88.88
PROXYPORT=3128
PROXYUSER=nome_utente
PROXYPASS=password

Al termine, salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Dopo aver definito i dettagli del proxy  nel file di configurazione, eseguire nikto con il parametro -userproxy;

nikto -h 192.168.99.99 -useproxy

Per specificare i dettagli della connessione proxy sulla riga comando senza modificare il file di configurazione, impostare il comando in questo modo:

nikto -h 192.168.99.99 -useproxy http://nome_utente:[email protected]:3128/

Oppure:

nikto -h 192.168.99.99 -useproxy http://@192.168.70.23:3128/

Nikto può esportare i risultati della scansione in diversi formati; CSV, HTML, XML, NBE, testo. Per salvare i risultati in un formato di output specifico, è necessario specificare l'opzione -o/-output e l'opzione -Format per definire il formato di output. Vedere gli esempi seguenti per salvare i risultati della scansione in formato html.

nikto -h 192.168.99.99 -o test.html -F html

Nikto può anche essere ottimizzato per eseguire scansioni specifiche. Di seguito è una descrizione delle opzioni di ottimizzazione che è possibile utilizzare per ottenere questa funzionalità.

1 - Interesting File / Seen in logs
2 - Misconfiguration / Default File
3 - Information Disclosure
4 - Injection (XSS/Script/HTML)
5 - Remote File Retrieval - Inside Web Root
6 - Denial of Service
7 - Remote File Retrieval - Server Wide
8 - Command Execution / Remote Shell
9 - SQL Injection
0 - File Upload
a - Authentication Bypass
b - Software Identification
c - Remote Source Inclusion
x - Reverse Tuning Options (i.e., include all except specified)

Ad esempio, per testare l'SQL Injection e il recupero di file remoti, dare il seguente comando:

nikto -h 192.168.99.99 -Tuning 79 -o test.html -F html

Conclusione

In questo tutorial hai installato e configurato Nikto su Ubuntu 18.04. Per ulteriori informazioni sull'utilizzo di Nikto:

nikto -H