Web Scanner Nikto

Nikto est un scanner web open source (GPL) qui vous permet de détecter environ 3500 fichiers ou scripts dangereux, de détecter environ 900 versions de serveurs HTTP. Ce outil est plus un outil de contact dans le sens OSSTMM et OWASP qu’un outil d’exploitation de vulnérabilité, bien que certaines vulnérabilités du type injection SQL, XSS ou RFI soient validées.

Nikto est un logiciel développé en langage PERL et composé de fichiers de références et de plugins qui ne sont quand à eux pas en licence GPL. Ces fichiers de références peuvent se retrouver dans le répertoire “plugins” de l’installation de Nikto. Le logiciel Nikto peut être exécuté sur toutes les plateformes qui disposent d’une installation PERL native. Pour les plateformes Windows, il vous faudra installer des logiciels du type Strawberry Perl ouActivePerl.

Nikto peut être intégré avec d’autres outils de sécurité, comme par exemple Nessus.

  • Configuration

Il est possible de changer la configuration de Nikto par le biais du fichier de configuration “config.txt”.

Les options conseillées à changer sont :

NMAP=/usr/local/bin/nmap

SKIPPORTS=21 111

###########################
# PROXY STUFF
###########################
#PROXYHOST=127.0.0.1
#PROXYPORT=8080
#PROXYUSER=proxyuserid
#PROXYPASS=proxypassword

  • Utilisation de base

Nikto ne requiert en tant qu’argument que d’une adresse IP cible.

./nikto.pl -h 192.168.1.1

Il est possible de spécifier un port spécifique pour le serveur HTTP.

./nikto.pl -h 192.168.1.1 -p 8080

Le scan d’un serveur HTTPS peut être effectué de la façon suivante :

./nikto.pl -h 192.168.1.1 -p 8080 -ssl

  • Mise à jour de la base de donnée et des plugins Nikto

./nikto.pl -update

  • Détection du type de serveur web

Nikto offre aussi la possibilité de ne détecter que la version du serveur web et de ne pas effectuer d’autres tests.

./nikto.pl -h 192.168.1.1 -findonly

  • Utilisation de Nikto avec un proxy

Afin de pouvoir utiliser Nikto par le biais d’un proxy, il vous faudra modifier le options “PROXY” du fichier de configuration de Nikto, et de lancer Nikto avec l’option suivante.

./nikto.pl -h targets.txt -useproxy

  • Rendre Nikto moins agressif

L’option “-Pause” peut être ajoutée avec une argument numérique qui représentera le nombre de secondes que Nikto devra attendre entre deux tests.

./nikto.pl -h 192.168.1.1 -Pause 10

  • Rendre Nikto plus verbeux

L’option “-Display” permet à Nikto d’être plus verbeux lors de son exécution.

Cette option peut avoir six arguments :

1 – Montre uniquement les redirections
2 – Montre les cookies reçus

[xxxxx@xxxxx nikto]$ ./nikto.pl -h 192.168.1.1 -Display 2
- Nikto v2.03/2.04
---------------------------------------------------------------------------
+ / sent cookie: PHPSESSID=njmnn0k70u5if6i5ls2lfe31h0; path=/
+ / sent cookie: zatazsession_id=fd9ad05c49ce453e2edfe76f36dc1123; path=/; domain=.zataz.com; HttpOnly
+ Target IP: 192.168.1.1
+ Target Hostname: xxxx.zataz.com
+ Target Port: 80
+ Start Time: 2009-05-28 16:06:09
---------------------------------------------------------------------------

3 – Montre toutes les réponses HTTP 200 – OK
4 – Montre les URL qui nécessitent une authentification
D – Lancement de Nikto en mode debug
V – Lancement de Nikto en mode verbeux

  • Sauvegarde des résultats de Nikto en différents formats

L’option “-Format” permet d’enregistrer les résultats d’un scan Nikto sous différents formats. Cette option ne fonctionne que si l’option “-o” est présente.

csv – Enregistre les résultats au format CSV
htm – Enregistre les résultats au format HTML
txt – Enregistre les résultats au format TXT
xml – Enregistre les résultats au format XML

./nikto.pl -h 192.168.1.1 -o test.csv -Format csv

  • Scan multiports

Il est possible d’indiquer à Nikto de scanner plusieurs port HTTP ou HTTPS en une seule ligne de commande.

./nikto.pl -h 192.168.1.1 -p 80,8080

  • Scan multi hosts

Si vous désirez scanner plusieurs cibles en même temps, il vous suffit de créer un fichier texte contenant les adresses IP ou noms d’hôte de vos cibles.

Les cibles peuvent être présentées sous les formats suivants :

192.168.1.1:80
192.168.1.2,80
192.168.1.3
192.168.1.1,80,443
192.168.1.1:80:443

Ce fichier sera ensuite appeler par le biais de la commande suivante.

./nikto.pl -h targets.txt

  • Techniques de mutation

Les techniques de mutation Nikto ont comme objectifs de combiner des tests ou de deviner des valeurs. Le lancement des ces options de mutations peut augmenter singulièrement le nombre de tests qui seront effectués.

L’option “-mutate” activera les techniques de mutation avec comme arguments possibles :

1 – Lancera tous les tests à la racine de chaque répertoire.
2 – Détection de fichiers de mots de passe. Nikto se chargera de détecter tous les fichiers commençant, par exemple, par “passwd”, “pass”, “password”, etc., et toutes les extensions de fichiers se terminant par exemple par “txt”, “pwd”, “back”, etc.
3 – Tentative d’énumération des utilisateurs système par le biais des réponses du serveur web Apache. Utilise les mauvaises configurations du serveurs web Apache UserDir.
4 – Tentative d’énumération des utilisateurs systèmes par le biais des réponses des cgiwrap.

  • Customisation du scan Nikto

La customisation du scan Nikto permet de réduire le nombre de tests qui seront effectués, et ainsi de se concentrer uniquement sur certains tests bien précis, avec par exemple les techniques de mutations.

En ajoutant l’option “-T” Nikto n’effectuera que les tests indiqués en arguments.

./nikto.pl -h 192.168.1.1 -T 58

Si le caractère “x” est mis à la fin des arguments, les tests indiqués seront alors exclus du scan Nikto.

./nikto.pl -h 192.168.1.1 -T 58x

Les arguments suivants sont possibles :

0 – Tests découvrant les scripts permettant un téléchargement de fichier sur le serveur cible.
1 – Tests remontant des fichiers inconnus qui pourraient être en relation avec des attaques déjà effectuées.
2 – Tests remontant les fichiers de configurations par défaut de certaines applications (documentations, etc.)
3 – Tests remontant les informations sensibles, comme les répertoires non protégés ou les comptes utilisateurs.
4 – Tests remontant les scripts potentiellement vulnérables aux injections XSS ou HTML
5 – Tests remontant les accès potentiels à des fichiers non autorisés uniquement situés à partir de la racine du serveur web.
6 – Tests remontant les scripts pouvant permettre les DoS (Denial of Services)
7 – Tests remontant les accès potentiels à des fichiers non autorisés à n’importe quel endroit du serveur.
8 – Tests remontant les scripts pouvant permettre l’exécution de commandes.
9 – Tests remontant les scripts vulnérables aux injections SQL.
a – Contournement d’authentification. Test de contournement d’authentification.
b – Tests remontant la version des logiciels installés.
c – Tests remontant les scripts permettant de dévoilés les codes source.

  • Techniques d’évasion

Nikto permet de lancer les tests avec différentes techniques d’évasions basées sur la librairie LibWhisker.

Ces techniques d’évasions sont évocables avec l’option “-evasion” et les arguments suivants :

1 – Générations d’URI aléatoires (non UTF8)
2 – Référence au répertoire de base (/./)
3 – Fin d’URL prématurée
4 – Longues chaînes de caractères
5 – Faux paramètres
6 – Espace simulée par TAB
7 – Changement en majuscule ou minuscule des URL
8 – Utilisation de séparateurs Windows (\)