Analyse de vulnérabilités Web avec Nikto sur Kali Linux

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous apprendrez les bases de l'analyse de vulnérabilités web à l'aide de Nikto, un puissant outil open-source, au sein d'un environnement Kali Linux. L'objectif est de comprendre comment identifier les failles de sécurité potentielles sur les serveurs web en exécutant des scans, en interprétant les résultats et en sauvegardant des rapports pour une analyse ultérieure. Grâce à des exercices étape par étape dans la VM LabEx, vous acquerrez une expérience pratique de l'interface en ligne de commande de Nikto. Cet atelier est conçu pour les débutants, vous guidant à travers chaque processus dans un environnement de conteneur contrôlé afin de bâtir des compétences fondamentales en évaluation de la sécurité web.

Ceci est un Atelier Guidé, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour terminer chaque étape et acquérir une expérience pratique. Les données historiques montrent qu'il s'agit d'un atelier de niveau intermédiaire avec un taux de réussite de 65%. Il a reçu un taux d'avis positifs de 94% de la part des apprenants.

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 à l'emploi. Cet atelier se déroule au sein de la VM LabEx, et lorsque vous ouvrez le terminal, vous êtes 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 fonctionne 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 de disposer des 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 des messages indiquant la progression, comme 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 validation. Ce processus peut prendre un court instant, et vous verrez la progression de l'installation, notamment 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 consultant sa version. Exécutez cette commande :

nikto -Version

Cette commande affiche la version de Nikto installée, confirmant qu'il est prêt à l'emploi. Le résultat attendu devrait ressembler à ceci :

Nikto 2.5.0 (LW 2.5)

Nikto étant installé, vous êtes prêt à passer aux étapes suivantes où vous l'utiliserez pour scanner des 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é web de base. Cette étape s'appuie sur la configuration de l'environnement effectuée précédemment et vous initie à l'utilisation de Nikto pour identifier les problèmes de sécurité potentiels sur un serveur web. Comme vous êtes déjà dans le shell du conteneur Kali Linux lors de l'ouverture du 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 analyse 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 cet atelier, nous utiliserons un serveur de test accessible publiquement, testphp.vulnweb.com, conçu pour l'apprentissage et la pratique de l'analyse de vulnérabilités. Cela garantit que nous effectuons nos scans de manière éthique et sécurisée.

Pour commencer, lancez un scan de base sur le serveur de test en utilisant Nikto. Saisissez 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 selon les conditions du réseau et la configuration de la cible. Pendant le scan, vous verrez les résultats s'afficher dans le terminal. 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

Lors du scan de testphp.vulnweb.com avec nikto, vous pourriez rencontrer des messages d'erreur. C'est tout à fait normal ; concentrez-vous sur les informations clés affichées.

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

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

ping -c 4 testphp.vulnweb.com

Cette commande envoie quelques paquets à la cible pour vérifier si elle est joignable. Si vous recevez des réponses, le serveur est accessible ; sinon, réessayez 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 permis de vous familiariser avec l'exécution d'un scan Nikto de base, posant ainsi les bases pour des analyses plus spécifiques dans les étapes suivantes. Vous avez exécuté la commande de scan et observé les premiers résultats directement dans le terminal du conteneur Kali Linux.

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

En vous appuyant sur le scan de base effectué à l'étape précédente, vous allez maintenant apprendre à réaliser des scans plus ciblés en utilisant les options de réglage (tuning) de Nikto. Nikto vous permet de concentrer vos analyses 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 fonction de réglage de Nikto pour personnaliser vos scans dans l'environnement du conteneur Kali Linux.

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

nikto -h testphp.vulnweb.com -Display V

L'option -Display V affiche une sortie détaillée, incluant les informations de réglage. Dans les résultats, vous verrez différentes catégories de tests identifiées par des chiffres et des lettres.

Maintenant, lançons un scan ciblé 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 (file disclosure). Ce scan peut prendre quelques minutes, et vous verrez une sortie dans le terminal similaire à celle-ci :

- 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 scanner à la fois les vulnérabilités de divulgation de fichiers (2) et les erreurs de configuration (9), utilisez :

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

Ce scan combiné vérifiera les deux catégories de problèmes, vous offrant une vue plus complète de types de vulnérabilités spécifiques sans avoir à lancer un scan intégral.

Si le scan ne produit aucun résultat ou rencontre des erreurs, vérifiez votre connexion Internet en testant la connectivité avec :

ping -c 4 testphp.vulnweb.com

Cette étape vous a aidé à comprendre comment utiliser les options de réglage de Nikto pour effectuer des scans plus précis, vous permettant de vous concentrer sur des préoccupations de sécurité spécifiques. Dans les étapes suivantes, nous explorerons d'autres fonctionnalités de Nikto pour améliorer vos capacités d'analyse.

Personnalisation des formats de sortie et sauvegarde des résultats

Après avoir appris à effectuer des scans ciblés, vous allez maintenant explorer comment personnaliser les formats de sortie et sauvegarder les résultats pour la documentation et l'analyse. Documenter correctement vos découvertes est un aspect crucial des évaluations de sécurité, et Nikto propose plusieurs options pour formater et enregistrer vos rapports.

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 proposées par Nikto :

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

Pour sauvegarder 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 affichant son contenu :

cat /root/nikto_text_report.txt

Pour générer un rapport HTML, qui offre 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 en HTML. Bien que vous ne puissiez pas visualiser directement le fichier HTML dans le terminal, vous pouvez vérifier sa création :

ls -l /root/nikto_report.html

Pour les données devant ê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 répondent à des besoins variés :

  • Les rapports texte sont faciles à lire dans un terminal.
  • Les rapports HTML sont organisés visuellement et parfaits pour le 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 vos conclusions de manière efficace.

Options avancées de Nikto pour une analyse approfondie

Dans cette dernière étape, vous explorerez certaines options avancées de Nikto qui permettent une analyse plus profonde et exhaustive. Ces fonctionnalités aident à découvrir des vulnérabilités cachées et fournissent plus de contexte sur les problèmes de sécurité potentiels. Cela complète les connaissances acquises précédemment en se concentrant sur les capacités avancées de Nikto dans l'environnement Kali Linux.

Explorons quelques-unes des options avancées les plus utiles de Nikto :

Tout d'abord, utilisons la technique d'évasion (-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 aléatoirement des caractères majuscules et minuscules. Vous devriez 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 80 par défaut, vous pouvez spécifier d'autres 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 pourrait ne pas retourner de résultats s'il n'a pas activé le HTTPS, mais cela démontre comment scanner des 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 des identifiants au format utilisateur:motdepasse. Pour le serveur de test, ces identifiants ne fonctionneront pas, mais cela montre comment configurer des 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 verbeuse, montrant plus de détails sur chaque test effectué. Sauvegarder cela dans un fichier avec -o vous donne une documentation complète du scan.

Enfin, combinons plusieurs options pour un scan exhaustif :

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 de déni de service (DoS).
  • -no404 réduit les faux positifs en ne signalant pas les erreurs 404.
  • -Format htm sauvegarde 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 d'analyse de vulnérabilités web. En combinant ces différentes techniques, vous pouvez réaliser des évaluations de sécurité approfondies et générer des rapports complets adaptés à vos besoins spécifiques.

Résumé

Dans cet atelier, vous avez appris à utiliser Nikto, un puissant scanner de vulnérabilités web, au sein d'un environnement Kali Linux. Vous avez commencé par configurer l'environnement et installer Nikto, puis vous avez progressé vers des techniques de scan de plus en plus sophistiquées.

Vous avez débuté 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 de Nikto pour vous concentrer sur des types de failles spécifiques. Vous avez exploré différents formats de sortie, notamment le texte, le HTML et le CSV, pour documenter et communiquer efficacement vos conclusions.

Enfin, vous avez découvert des options avancées pour une analyse plus poussée, incluant les techniques d'évasion, la spécification de ports et de protocoles, la gestion de l'authentification et la sortie détaillée. Ces compétences constituent 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 cet atelier vous dote d'une connaissance concrète de l'interface en ligne de commande de Nikto et de la capacité à personnaliser les scans selon vos exigences 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.