L’aumento delle applicazioni Web solleva un’importante questione sul problema di sicurezza in quanto, in alcuni casi, durante la fase di progettazione, sviluppo, configurazione e settaggio del server o dei sottodomini non viene presa in considerazione una scansione con un vulnerability scanner come Nikto per valutare potenziali problematiche relative proprio alle vulnerabilità.
Di conseguenza, spesso finiamo per avere applicazioni Web vulnerabili che gli aggressori potrebbero sfruttare, mettendo a repentaglio le informazioni degli utenti.
Non tutti i controlli rappresentano un problema di sicurezza, sebbene la maggior parte lo sia, ma rilevano quei dannatissimi file di configurazione, dimenticanze, condivisioni o permessi assegnati per il solo scopo di sviluppare l’applicazione che possono fornire informazioni preziose per coloro che hanno intenzioni malevole.
Indice degli argomenti
Cos’è e a cosa serve Nikto
Per risolvere questi tipi problemi, esistono appunto gli scanner di vulnerabilità come Nikto che “prendono di mira” le applicazioni web per valutarne l’integrità.
Nikto, in particolare, è uno strumento di valutazione del server web molto popolare e facile da usare per trovare rapidamente potenziali problemi e vulnerabilità.
È uno scanner open source (distribuito con licenza GPL) che esegue test completi su server Web per diversi elementi, inclusi oltre 6.700 file/programmi potenzialmente pericolosi, verifica la presenza di versioni obsolete di oltre 1.250 server e problemi specifici della versione su oltre 270 server.
Verifica, inoltre, la presenza di elementi di configurazione come la presenza di più file di indice, opzioni del server HTTP e tenta di identificare i server Web e i software installati.
Gli elementi di scansione e i plugin vengono aggiornati di frequente ed è possibile fare in modo che si installino automaticamente. Le loro funzionalità includono anche un report in vari formati quali HTML, XML, CSV, scansione su più porte, controllo sui vari sottodomini, identificazione delle Web app specifiche in esecuzione sul server Web, verifica la presenza di vulnerabilità note e molto altro.
Nikto è stato originariamente scritto e mantenuto da Sullo e attualmente è gestito da David Lodge, sebbene anche altri collaboratori siano stati coinvolti nel progetto.
Sviluppato in Perl, funziona su qualsiasi piattaforma ed è stato incorporato nella distribuzione Kali Linux Penetration Testing. Infine, supporta SSL, proxy, autenticazione host, evasione IDS e altro ancora.
Le principali funzionalità di Nikto
Durante la scansione delle app Web, potrebbero verificarsi diversi scenari. Nikto supporta un’ampia varietà di opzioni che possono essere implementate in tali situazioni. Quella che segue è una panoramica delle opzioni incluse nel vulnerability scanner.
- -config: consente al pentester, all’hacker o allo sviluppatore di specificare un file di configurazione alternativo da utilizzare al posto del config.txt che si trova nella directory di installazione;
- -Display: si può controllare l’output mostrato da Nikto. I numeri di riferimento vengono utilizzati per le specifiche. Possono essere utilizzati anche più numeri. I numeri di riferimento consentiti possono essere visualizzati di seguito:
1 – Mostra reindirizzamenti;
2 – Mostra i cookie ricevuti;
3 – Mostra tutte le risposte 200/OK;
4 – Mostra gli URL che richiedono l’autenticazione;
D – Uscita di debug;
V – Output dettagliato;
- -format: potrebbe essere necessario salvare l’output/i risultati in un file dopo una scansione. Questa opzione fa esattamente questo. Viene utilizzata l’opzione -o (-output); tuttavia, se non specificato, il valore predefinito verrà preso dall’estensione del file specificata nell’opzione -output. I formati validi sono:
- csv – per elenchi separati da virgole;
- htm – per un report HTML;
- txt – per un report di testo;
- xml – per un report XML;
- -host: questa opzione viene utilizzata per specificare gli host da utilizzare come destinazione per una scansione. Può essere un indirizzo IP, un nome host o un file di testo con diversi host;
- -id: per i siti Web che richiedono l’autenticazione, questa opzione viene utilizzata per specificare l’ID e la password da utilizzare;
- -list-plugins: questa opzione elencherà tutti i plug-in che Nikto può eseguire quindi possono essere regolati per una sessione utilizzando l’opzione -plugins;
- -no404: viene utilizzata per disabilitare il controllo 404 (file non trovato). Ciò riduce il numero totale di richieste effettuate al server Web e può essere utilizzato quando si controlla un server su una connessione Internet lenta;
- -Plugins: consente di selezionare i plug-in che verranno eseguiti sulle destinazioni specificate. Dovrebbe essere fornito un elenco separato da virgole che elenca i nomi dei plugin;
- -port: specifica le porte TCP da scansionare. Per testare più di una porta sullo stesso host, è possibile specificare l’elenco delle porte nell’opzione -p (-port). Le porte possono essere specificate come intervallo (ad esempio, 80-90) o come elenco delimitato da virgole (ad esempio, 80,88,90). Se non specificato, viene utilizzata la porta 80;
- -Pausa: può essere utilizzata per impedire che i test vengano bloccati da un WAF ( Web application firewall ) perché sembrino troppo sospetti. Definisce i secondi di ritardo tra un test e l’altro;
- -timeout: a volte è utile attendere prima di scadere una richiesta. Questa opzione specifica il numero di secondi di attesa. Il timeout predefinito è di 10 secondi;
- -useproxy: viene utilizzata nel caso in cui le reti connesse richiedano un proxy. Questa opzione chiede a Nikto di utilizzare il proxy HTTP definito nel file di configurazione;
- -update: aggiorna i plugin e i database direttamente da cirt.net.
Queste, ovviamente, sono parte delle opzioni che si possono utilizzare: per visualizzare l’elenco completo si possono elencare con il semplice comando nikto -H, seguito da Invio, in modo da visualizzare e leggere tutte le opzioni disponibili.
Come effettuare la prima scansione con Nikto
La scansione più semplice che si può effettuare con Nikto richiede un hostname o IP come parametro.
Nikto -h <IP_Target/hostname>
Una volta completata la scansione, i risultati verranno visualizzati in un formato molto simile allo screenshot qui sotto.
Le opzioni discusse sopra possono essere utilizzate per perfezionare la scansione secondo i desideri del pentester, dell’hacker o dello sviluppatore.
Da tenere presente che la generazione di rapporti è consentita nel formato desiderato, come discusso in precedenza.
Dai risultati della scansione, possiamo vedere chiaramente i problemi identificati insieme alla loro classificazione OSVDB.
Conclusioni
In conclusione, Nikto è lo scanner di vulnerabilità delle applicazioni web più leggero che è in grado di funzionare su qualsiasi sistema ed il fatto che viene aggiornato regolarmente significa che vengono forniti risultati affidabili sulle ultime vulnerabilità attualmente in circolazione.
Inoltre, non funziona solo testando gli exploit disponibili all’interno del proprio database, ma anche andando a cercare tutti quei file e quelle mis-configurazioni note che possono causare possibili vulnerabilità o punti di accesso su di un server web.
Dunque Nikto è un tool di security auditing che si limita ad eseguire semplici “safe check”, ossia “prove a salve”, sull’host analizzato senza iniezione di alcun payload dannoso.
Tuttora è uno degli strumenti più usati in fase di assessment di siti e di e-commerce.