Installer et utiliser Nikto sous CentOS

Scanner de sécurité pour serveurs webNikto est un scanner de sécurité pour les serveurs web (Web Server Assessment Tool) écrit en Perl. Il permet d’auditer un serveur web à la recherche de failles connues, de tester quelques milliers de vulnérabilités, de vérifier l’obsolescence du serveur et de ses composants et de rechercher des dossiers pouvant contenir des informations sensibles.

Nikto n’est pas exactement un scanner furtif. Il vise la rapidité et ne se gêne pas de bombarder le serveur de requêtes, en inondant les logs. Utilisez-le donc uniquement sur vos propres serveurs, ou alors sur des machines où vous avez le consentement de l’administrateur.

Installation

Nikto est fourni par le dépôt EPEL.

# yum install nikto

Mise à jour initiale

L’option -update permet de mettre à jour les plugins de Nikto. Un bug bénin affiche un avertissement à cause du fichier inexistant /usr/share/nikto/docs/CHANGES.txt. Il suffit de créer un fichier vide correspondant pour éviter le blocage.

# mkdir /usr/share/nikto/docs
# touch /usr/share/nikto/docs/CHANGES.txt

Lancer la mise à jour.

# nikto -update
+ 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 
  https://github.com/sullo/nikto

Configuration initiale

Éditer /etc/nikto/config et décommenter l’option RFIURL aux alentours de la ligne 20.

# RFI URL. This remote file should return a phpinfo call, 
# for example: <?php phpinfo(); ?>
# You may use the one below, if you like.
RFIURL=http://cirt.net/rfiinc.txt?

Sans cette option, Nikto affichera l’avertissement suivant lors de l’utilisation.

*** RFIURL is not defined in nikto.conf--no RFI tests will run ***

RFI (Remote File Inclusion) est un type de vulnérabilité que l’on trouve souvent sur les serveurs web. Il permet à un attaquant d’inclure un fichier distant, généralement par le biais d’un script sur le serveur.

Utilisation

La prise en main de Nikto est triviale. Il suffit de fournir le nom d’hôte du serveur en argument.

$ nikto -host sd-100246.dedibox.fr
- Nikto v2.1.5
-----------------------------------------------------------------
+ Target IP:          163.172.220.174
+ Target Hostname:    sd-100246.dedibox.fr
+ Target Port:        80
+ Start Time:         2017-07-22 09:46:59 (GMT2)
-----------------------------------------------------------------
+ Server: Apache
  ...

Alternativement, on peut fournir l’adresse IP.

$ nikto -host 163.172.220.174
- Nikto v2.1.5
-----------------------------------------------------------------
+ Target IP:          163.172.220.174
+ Target Hostname:    sd-100246.dedibox.fr
+ Target Port:        80
+ Start Time:         2017-07-22 09:49:31 (GMT2)
-----------------------------------------------------------------
+ Server: Apache
  ...

Nikto scanne le port 80 par défaut. L’option -port permet de spécifier un autre port.

$ nikto -host slackbox.fr -port 443
- Nikto v2.1.5
-----------------------------------------------------------------
+ Target IP:          163.172.220.174
+ Target Hostname:    slackbox.fr
+ Target Port:        443
+ Start Time:         2017-07-22 09:52:09 (GMT2)
-----------------------------------------------------------------
+ Server: Apache
  ...

L’option -port accepte plusieurs arguments. Pour un scan plus complet, on pourra donc utiliser -port 80,443.

$ nikto -host 163.172.220.174 -port 80,443
- Nikto v2.1.5
-----------------------------------------------------------------
+ Target IP:          163.172.220.174
+ Target Hostname:    sd-100246.dedibox.fr
+ Target Port:        80
+ Start Time:         2017-07-22 10:08:58 (GMT2)
-----------------------------------------------------------------
+ Server: Apache
  ...
+ End Time:           2017-07-22 10:15:33 (GMT2) (395 seconds)
-----------------------------------------------------------------
+ Target IP:          163.172.220.174
+ Target Hostname:    sd-100246.dedibox.fr
+ Target Port:        443
+ Start Time:         2017-07-22 10:15:33 (GMT2)
-----------------------------------------------------------------
+ Server: Apache
  ...

Dans le cas d’un hébergement sécurisé, l’option -ssl permet d’accélérer le scan.

$ nikto -host slackbox.fr -port 443 -ssl
- Nikto v2.1.5
-----------------------------------------------------------------
+ Target IP:          163.172.220.174
+ Target Hostname:    slackbox.fr
+ Target Port:        443
-----------------------------------------------------------------
+ SSL Info:        Subject: /CN=slackbox.fr
                   Ciphers: ECDHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/O=Let's Encrypt/
                            CN=Let's Encrypt Authority X3
+ Start Time:         2017-07-22 09:52:32 (GMT2)
-----------------------------------------------------------------
+ Server: Apache
  ...

Nikto affiche les vulnérabilités trouvées au fur et à mesure. Voici à quoi peut ressembler un rapport complet.

$ nikto -host amandine.microlinux.lan
- Nikto v2.1.5
-----------------------------------------------------------------
+ Target IP:          192.168.2.5
+ Target Hostname:    amandine.microlinux.lan
+ Target Port:        80
+ Start Time:         2017-07-22 09:57:58 (GMT2)
-----------------------------------------------------------------
+ Server: Apache/2.4.6 (CentOS) PHP/5.4.16
+ Server leaks inodes via ETags, header found with file /, 
  fields: 0x1321 0x5058a1e728280 
+ The anti-clickjacking X-Frame-Options header is not present.
+ No CGI Directories found (use '-C all' to force check all 
  possible dirs)
+ OSVDB-877: HTTP TRACE method is active, suggesting the host 
             is vulnerable to XST
+ 6545 items checked: 0 error(s) and 3 item(s) reported on 
                      remote host
+ End Time: 2017-07-22 09:58:10 (GMT2) (12 seconds)
-----------------------------------------------------------------
+ 1 host(s) tested

La correction des failles de sécurité trouvées par Nikto fera l’objet d’une série d’articles détaillés.

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *