Scan de vulnérabilités web avec Nikto sous Kali

Kali LinuxKali LinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo, vous apprendrez les bases de l'analyse des vulnérabilités web en utilisant Nikto, un outil open-source puissant, dans un environnement Kali Linux. L'objectif est de comprendre comment identifier les problèmes de sécurité potentiels sur les serveurs web en exécutant des scans, en interprétant les résultats et en enregistrant les rapports pour une analyse plus approfondie. Grâce à des exercices étape par étape dans la VM LabEx, vous acquerrez une expérience pratique de l'interface de ligne de commande de Nikto. Ce labo est conçu pour les débutants, vous guidant à travers chaque processus dans un environnement de conteneur contrôlé afin de développer des compétences fondamentales en matière d'évaluations de la sécurité web.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kali(("Kali")) -.-> kali/KaliGroup(["Kali"]) kali/KaliGroup -.-> kali/term_ops("Kali Terminal") kali/KaliGroup -.-> kali/file_ctrl("File Management") kali/KaliGroup -.-> kali/pkg_ops("Package Management") kali/KaliGroup -.-> kali/web_ctrl("Web Services") kali/KaliGroup -.-> kali/vuln_scan("Vulnerability Scanning") kali/KaliGroup -.-> kali/nikto_ops("Nikto Scanner") subgraph Lab Skills kali/term_ops -.-> lab-552301{{"Scan de vulnérabilités web avec Nikto sous Kali"}} kali/file_ctrl -.-> lab-552301{{"Scan de vulnérabilités web avec Nikto sous Kali"}} kali/pkg_ops -.-> lab-552301{{"Scan de vulnérabilités web avec Nikto sous Kali"}} kali/web_ctrl -.-> lab-552301{{"Scan de vulnérabilités web avec Nikto sous Kali"}} kali/vuln_scan -.-> lab-552301{{"Scan de vulnérabilités web avec Nikto sous Kali"}} kali/nikto_ops -.-> lab-552301{{"Scan de vulnérabilités web avec Nikto sous Kali"}} end

Configuration de l'environnement et installation de Nikto

Dans cette première étape, vous allez configurer votre environnement de travail dans le conteneur Kali Linux et vous assurer que Nikto, le scanner de vulnérabilités web, est installé et prêt à être utilisé. Ce labo est réalisé dans la VM LabEx, et lorsque vous ouvrez le terminal, vous serez automatiquement connecté au shell du conteneur Kali Linux. Il n'est pas nécessaire de démarrer manuellement le conteneur ou d'entrer dans le shell ; l'environnement est déjà configuré pour vous.

Commençons par comprendre la configuration. La VM LabEx s'exécute sur un hôte cloud indépendant avec Docker préinstallé, et un conteneur Kali Linux a été configuré pour s'exécuter automatiquement. Toutes vos opérations se dérouleront à l'intérieur du terminal de ce conteneur. Nikto est un outil utilisé pour scanner les serveurs web à la recherche de vulnérabilités telles que des logiciels obsolètes ou des erreurs de configuration, et nous devons nous assurer qu'il est installé avant de continuer.

Tout d'abord, mettez à jour la liste des paquets dans le conteneur Kali Linux pour vous assurer d'avoir les dernières informations sur les logiciels disponibles. Exécutez la commande suivante dans le terminal :

apt update

Cette commande récupère les dernières informations sur les paquets à partir des dépôts configurés. Cela peut prendre quelques instants, et vous verrez une sortie indiquant la progression, telle que le téléchargement des listes de paquets. Un exemple de sortie pourrait ressembler à ceci :

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
Get:2 http://mirrors.cloud.aliyuncs.com/kali kali-rolling/main amd64 Packages [18.1 MB]
...
Fetched 18.5 MB in 5s (3,700 kB/s)
Reading package lists... Done

Une fois la mise à jour terminée, installez Nikto s'il n'est pas déjà présent dans le conteneur. Utilisez la commande suivante pour l'installer :

apt install -y nikto iputils-ping

L'option -y confirme automatiquement l'installation sans demander de saisie. Ce processus peut prendre un certain temps, et vous verrez une sortie indiquant la progression de l'installation, telle que le téléchargement et la configuration du paquet. Un exemple de sortie pourrait être :

Reading package lists... Done
Building dependency tree... Done
...
Setting up nikto (1:2.1.5-3.1) ...

Après l'installation, vérifiez que Nikto est correctement installé en vérifiant sa version. Exécutez cette commande :

nikto -Version

Cette commande affiche la version de Nikto installée, confirmant qu'il est prêt à être utilisé. La sortie attendue devrait ressembler à ceci :

Nikto 2.5.0 (LW 2.5)

Avec Nikto installé, vous êtes prêt à passer aux étapes suivantes où vous l'utiliserez pour scanner les serveurs web. Cette étape garantit que votre environnement est correctement configuré et que les outils nécessaires sont disponibles pour les tâches à venir.

Exécution d'un scan web Nikto de base

Maintenant que Nikto est installé dans votre conteneur Kali Linux, vous allez apprendre à exécuter un scan de vulnérabilités web de base. Cette étape s'appuie sur la configuration de l'environnement de l'étape précédente et vous initie à l'utilisation de Nikto pour identifier les problèmes de sécurité potentiels sur un serveur web. Puisque vous êtes déjà dans le shell du conteneur Kali Linux lorsque vous ouvrez le terminal dans la VM LabEx, il n'est pas nécessaire de démarrer ou d'entrer manuellement dans le conteneur.

Comprenons ce que fait un scan Nikto de base. Nikto scanne un serveur web cible à la recherche de vulnérabilités courantes, telles que des versions de logiciels obsolètes ou des erreurs de configuration qui pourraient être exploitées. Pour ce labo, nous utiliserons un serveur de test accessible au public, testphp.vulnweb.com, qui est conçu pour l'apprentissage et la pratique du scan de vulnérabilités. Cela garantit que nous effectuons un scan de manière éthique et sûre.

Pour commencer, exécutez un scan de base sur le serveur de test à l'aide de Nikto. Entrez la commande suivante dans le terminal :

nikto -h testphp.vulnweb.com

L'option -h spécifie l'hôte à scanner, dans ce cas, testphp.vulnweb.com. Ce scan peut prendre quelques minutes, en fonction des conditions du réseau et de la configuration de la cible. Pendant le scan, vous verrez une sortie dans le terminal indiquant la progression. Un exemple de sortie pourrait ressembler à ceci :

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Start Time:         2025-04-21 07:29:12 (GMT0)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ /: Retrieved x-powered-by header: PHP/5.6.40-38+ubuntu20.04.1+deb.sury.org+1.
...
---------------------------------------------------------------------------
+ 1 host(s) tested

Cette sortie fournit des informations initiales sur la cible, telles que son adresse IP, son nom d'hôte et son port. Elle répertorie également les problèmes potentiels, tels que l'absence d'en-têtes de sécurité ou les composants obsolètes. Ne vous inquiétez pas si la sortie semble détaillée ; l'objectif ici est d'exécuter le scan et d'observer le processus. Dans les étapes suivantes, nous analyserons ces résultats plus en détail.

Si le scan ne démarre pas ou qu'aucune sortie n'apparaît, assurez-vous que votre connexion Internet est active dans la VM LabEx. Vous pouvez tester la connectivité à la cible en exécutant :

ping -c 4 testphp.vulnweb.com

Cette commande envoie quelques paquets à la cible pour vérifier si elle est accessible. Si vous voyez des réponses, le serveur est accessible ; sinon, relancez le scan ou vérifiez vos paramètres réseau dans la VM LabEx.

PING testphp.vulnweb.com (44.228.249.3) 56(84) bytes of data.
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=1 ttl=55 time=21.4 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=2 ttl=55 time=21.7 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=3 ttl=55 time=21.5 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=4 ttl=55 time=21.5 ms

--- testphp.vulnweb.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 21.435/21.523/21.699/0.103 ms

Cette étape vous a initié à l'exécution d'un scan Nikto de base, établissant les bases pour un scan et une analyse plus spécifiques dans les étapes suivantes. Vous avez exécuté la commande de scan et observé la sortie initiale directement dans le terminal du conteneur Kali Linux.

Utilisation des options de réglage (Tuning Options) de Nikto pour un scan ciblé

En vous basant sur le scan de base que vous avez effectué à l'étape précédente, vous allez maintenant apprendre à effectuer des scans plus ciblés à l'aide des options de réglage (tuning options) de Nikto. Nikto vous permet de concentrer vos scans sur des types spécifiques de vulnérabilités, ce qui est utile lorsque vous recherchez des problèmes particuliers ou que vous souhaitez réduire le temps de scan.

Dans cette étape, vous apprendrez à utiliser la fonctionnalité de réglage de Nikto pour personnaliser vos scans dans l'environnement de conteneur Kali Linux.

Comprenons d'abord quelles options de réglage sont disponibles dans Nikto. Vous pouvez afficher la liste complète des options de réglage disponibles avec la commande suivante :

nikto -h testphp.vulnweb.com -Display V

L'option -Display V affiche une sortie détaillée, y compris des informations sur le réglage. Dans la sortie, vous verrez différentes catégories de tests étiquetées avec des chiffres et des lettres.

Maintenant, exécutons un scan ciblé axé sur les vulnérabilités courantes liées aux fichiers. Exécutez la commande suivante :

nikto -h testphp.vulnweb.com -Tuning 2

L'option -Tuning 2 teste spécifiquement les vulnérabilités de divulgation de fichiers. Ce scan peut prendre quelques minutes, et vous verrez une sortie dans le terminal similaire à ce qui suit :

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ Scanning for File Upload vulnerabilities...
+ Multiple file upload fields found on login.php
...

Vous pouvez également combiner plusieurs options de réglage. Par exemple, pour rechercher à la fois les vulnérabilités de divulgation de fichiers (2) et de mauvaise configuration (9), utilisez :

nikto -h testphp.vulnweb.com -Tuning 2,9

Ce scan combiné vérifiera les deux catégories de problèmes, vous donnant une vue plus complète des types de vulnérabilités spécifiques sans exécuter un scan complet.

Si le scan ne produit aucune sortie ou rencontre des erreurs, assurez-vous que votre connexion Internet est active en testant la connectivité avec :

ping -c 4 testphp.vulnweb.com

Cette étape vous a aidé à comprendre comment utiliser les options de réglage (tuning options) de Nikto pour effectuer des scans plus ciblés, vous permettant de vous concentrer sur des problèmes de sécurité spécifiques. Dans les étapes suivantes, nous explorerons d'autres fonctionnalités de Nikto qui améliorent vos capacités de scan de vulnérabilités.

Personnalisation des formats de sortie et sauvegarde des résultats de scan

Après avoir appris à effectuer des scans ciblés avec Nikto, vous allez maintenant explorer comment personnaliser les formats de sortie et sauvegarder les résultats de scan à des fins de documentation et d'analyse. La documentation appropriée de vos découvertes est un aspect crucial des évaluations de sécurité, et Nikto offre plusieurs options pour formater et sauvegarder vos résultats de scan.

Dans cette étape, vous apprendrez à générer des rapports dans différents formats directement dans le terminal du conteneur Kali Linux.

Commençons par examiner les différentes options de format de sortie que Nikto propose. Les formats les plus courants sont :

  1. Texte (par défaut) : Sortie en texte brut
  2. HTML : Rapport HTML formaté
  3. CSV (Comma-Separated Values) : Valeurs séparées par des virgules pour l'importation dans des tableurs
  4. XML : Données XML structurées pour le traitement automatisé

Pour enregistrer les résultats du scan au format texte par défaut, exécutez :

nikto -h testphp.vulnweb.com -o /root/nikto_text_report.txt

L'option -o spécifie le chemin du fichier de sortie. Une fois le scan terminé, vérifiez que le fichier a été créé en visualisant son contenu :

cat /root/nikto_text_report.txt

Pour générer un rapport HTML, qui fournit un format plus lisible et structuré, utilisez :

nikto -h testphp.vulnweb.com -Format htm -o /root/nikto_report.html

L'option -Format htm indique à Nikto de formater la sortie au format HTML. Bien que vous ne puissiez pas visualiser directement le fichier HTML dans le terminal, vous pouvez vérifier qu'il a été créé :

ls -l /root/nikto_report.html

Pour les données qui doivent être importées dans d'autres outils ou tableurs, vous pouvez générer un rapport au format CSV :

nikto -h testphp.vulnweb.com -Format csv -o /root/nikto_report.csv

Une fois le scan terminé, vérifiez le fichier CSV :

head /root/nikto_report.csv

Cela affichera les premières lignes du fichier CSV, montrant comment les données sont structurées.

Ces différents formats de sortie servent différents objectifs :

  • Les rapports texte sont faciles à lire dans un terminal
  • Les rapports HTML sont visuellement organisés et adaptés au partage avec des équipes
  • Les formats CSV et XML sont excellents pour l'importation dans d'autres outils de sécurité ou bases de données

En apprenant à personnaliser les formats de sortie, vous avez amélioré votre capacité à documenter et à communiquer efficacement vos découvertes.

Options avancées de Nikto pour un scan plus approfondi

Dans cette dernière étape, vous explorerez certaines options avancées de Nikto qui permettent un scan plus approfondi et plus complet. Ces fonctionnalités vous aident à découvrir des vulnérabilités cachées et fournissent plus de contexte sur les problèmes de sécurité potentiels. Ceci s'appuie sur les connaissances des étapes précédentes, en se concentrant sur les capacités avancées de Nikto dans l'environnement de conteneur Kali Linux.

Explorons certaines des options avancées les plus utiles de Nikto :

Tout d'abord, utilisons la technique -evasion pour contourner les systèmes de détection d'intrusion simples. Cela peut être utile lors du test des contrôles de sécurité :

nikto -h testphp.vulnweb.com -evasion 1

L'option -evasion 1 encode l'URL en utilisant des caractères majuscules et minuscules aléatoires. Vous pourriez voir une sortie similaire à :

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Evasion technique:  Random URI encoding (non-UTF8)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
...

Ensuite, effectuons un scan avec un port et un protocole spécifiques. Bien que nous ayons scanné le port HTTP par défaut 80, vous pouvez spécifier différents ports :

nikto -h testphp.vulnweb.com -port 443 -ssl

L'option -port 443 cible le port 443, et -ssl indique à Nikto d'utiliser le protocole HTTPS. Pour ce serveur de test, cela peut ne pas renvoyer de résultats car il pourrait ne pas avoir HTTPS activé, mais cela montre comment scanner les services web sécurisés.

Pour les sites nécessitant une authentification, Nikto propose des options pour gérer l'authentification HTTP de base :

nikto -h testphp.vulnweb.com -id admin:password

L'option -id vous permet de spécifier les informations d'identification au format nom_utilisateur:mot_de_passe. Pour le serveur de test, ces informations d'identification ne fonctionneront pas, mais cela montre comment configurer les scans authentifiés.

Vous pouvez également augmenter la verbosité du scan pour obtenir des informations plus détaillées :

nikto -h testphp.vulnweb.com -Display V -o /root/nikto_verbose_report.txt

L'option -Display V fournit une sortie détaillée (verbose output), montrant plus de détails sur chaque test effectué. L'enregistrement de ceci dans un fichier avec -o vous donne une documentation complète du scan.

Enfin, combinons plusieurs options pour un scan complet :

nikto -h testphp.vulnweb.com -Tuning x -no404 -Format htm -o /root/final_report.html

Dans cette commande :

  • -Tuning x teste tout sauf les vulnérabilités DoS (Denial of Service)
  • -no404 réduit les faux positifs en ne signalant pas les erreurs 404
  • -Format htm enregistre le rapport au format HTML
  • -o spécifie le fichier de sortie

Cette étape vous a présenté plusieurs options avancées de Nikto qui étendent vos capacités de scan de vulnérabilités web. En combinant ces différentes techniques, vous pouvez effectuer des évaluations de sécurité approfondies et générer des rapports complets adaptés à vos besoins spécifiques.

Résumé

Dans ce labo, vous avez appris à utiliser Nikto, un puissant scanner de vulnérabilités web, dans un environnement Kali Linux. Vous avez commencé par configurer l'environnement et installer Nikto, puis vous avez progressé à travers des techniques de scan de plus en plus sophistiquées.

Vous avez commencé par des scans de base pour identifier les vulnérabilités courantes sur un serveur de test, puis vous avez appris à effectuer des scans ciblés en utilisant les options de réglage (tuning options) de Nikto pour vous concentrer sur des types spécifiques de vulnérabilités. Vous avez exploré différents formats de sortie, notamment texte, HTML et CSV, afin de documenter et de communiquer efficacement vos découvertes.

Enfin, vous avez découvert des options avancées pour un scan plus approfondi, notamment les techniques d'évasion (evasion techniques), la spécification du port et du protocole, la gestion de l'authentification et la sortie détaillée (verbose output). Ces compétences fournissent une base solide pour mener des évaluations de sécurité web, que ce soit à des fins éducatives ou pour des tests de sécurité professionnels.

L'expérience pratique acquise dans ce labo vous fournit une connaissance pratique de l'interface de ligne de commande de Nikto et la capacité de personnaliser les scans en fonction de vos besoins spécifiques. Ce sont des compétences essentielles pour toute personne intéressée par la sécurité web et l'évaluation des vulnérabilités.