Sélectionner des plugins spécifiques pour un scan ciblé dans Nikto

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Nikto est un puissant scanner de serveurs web open-source qui effectue des tests complets sur les serveurs web pour de nombreux éléments, notamment plus de 6700 fichiers/programmes potentiellement dangereux, des vérifications de versions obsolètes pour plus de 1250 serveurs, et des problèmes spécifiques à la version sur plus de 270 serveurs.

Par défaut, Nikto exécute un large éventail de plugins, ce qui peut prendre du temps. Pour un scan plus efficace et ciblé, vous pouvez sélectionner des plugins spécifiques à exécuter. Ceci est utile lorsque vous souhaitez vérifier une vulnérabilité particulière ou un type spécifique de mauvaise configuration.

Dans ce laboratoire, vous apprendrez à lister tous les plugins Nikto disponibles, puis à exécuter un scan ciblé en utilisant un seul plugin spécifique.

Lister tous les plugins disponibles avec -list-plugins

Dans cette étape, vous apprendrez à afficher tous les plugins dont Nikto dispose pour le scan. C'est la première étape pour effectuer un scan ciblé, car vous devez connaître les noms des plugins parmi lesquels vous pouvez choisir.

L'option -list-plugins indique à Nikto d'afficher une liste détaillée de tous les plugins, puis de quitter, sans effectuer de scan.

Exécutez la commande suivante dans votre terminal pour lister tous les plugins disponibles :

nikto -list-plugins

Vous verrez une longue liste de plugins défiler. La sortie est formatée en colonnes indiquant le nom du plugin, l'auteur et une brève description de son objectif.

Voici un exemple tronqué de ce à quoi ressemblera la sortie :

- Nikto 2.5.0
---------------------------------------------------------------------------
Plugin: apache_expect_header
  Author:      David Lodge <dave at cirt.net>
  Description: See if an Expect header will crash Apache. Bugtraq ID 5253.
  Type:        Standard
  Version:     2.5.0
  CVSID:       $Id: apache_expect_header.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $

Plugin: apacheusers
  Author:      Chris Forte
  Description: Enumerate apache users via ~user requests
  Type:        Standard
  Version:     2.5.0
  CVSID:       $Id: apacheusers.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $

... (beaucoup plus de plugins) ...

Prenez un moment pour parcourir la liste afin d'avoir une idée de la variété des tests que Nikto peut effectuer.

Choisir un plugin spécifique à exécuter, par exemple apacheusers

Dans cette étape, nous allons examiner la liste de l'étape précédente et choisir un plugin spécifique pour notre scan ciblé. Il s'agit d'une étape conceptuelle où vous identifiez un plugin en fonction d'un objectif de test spécifique.

Pour ce laboratoire, nous choisirons le plugin apacheusers. Comme sa description l'indique, ce plugin tente d'"énumérer les utilisateurs Apache via les requêtes ~user". C'est un test courant pour voir si un serveur web expose des noms d'utilisateur système valides.

Même si notre serveur cible est un simple serveur Python et non Apache, nous utiliserons ce plugin pour démontrer le processus de sélection et d'exécution. Le plugin s'exécutera, mais il ne trouvera aucune vulnérabilité sur notre serveur non-Apache, ce qui est un résultat valide et attendu.

Dans l'étape suivante, vous apprendrez à construire la commande pour utiliser uniquement ce plugin.

Utiliser l'option -plugins avec le nom du plugin désiré

Dans cette étape, vous apprendrez à construire la commande Nikto pour exécuter uniquement le plugin que vous avez sélectionné.

Pour spécifier les plugins à exécuter, vous utilisez l'option -plugins suivie du nom du plugin. Vous pouvez également fournir une liste de plugins séparés par des virgules si vous souhaitez en exécuter plusieurs, mais pour ce laboratoire, nous nous concentrerons sur un seul plugin.

La structure de commande de base est : nikto -h <hôte_cible> -plugins <nom_du_plugin>

Pour notre plugin choisi, apacheusers, et notre serveur de test fonctionnant localement sur le port 8000, la commande sera : nikto -h 127.0.0.1:8000 -plugins apacheusers

Décomposons cette commande :

  • nikto : Le programme que nous exécutons.
  • -h 127.0.0.1:8000 : L'option -h (host) spécifie la cible. Notre serveur de test fonctionne sur la machine locale (127.0.0.1) sur le port 8000.
  • -plugins apacheusers : C'est la partie clé de la commande. Elle indique à Nikto d'exécuter uniquement le plugin apacheusers et d'ignorer tous les autres.

Dans l'étape suivante, vous exécuterez cette commande et verrez les résultats du scan ciblé.

Exécuter le scan ciblé sur la cible

Dans cette étape, vous allez exécuter la commande que vous venez d'apprendre pour effectuer un scan ciblé sur le serveur web de test.

Exécutez la commande suivante dans votre terminal. Cela lancera Nikto, mais au lieu de s'exécuter pendant plusieurs minutes, il se terminera très rapidement car il n'exécute qu'un seul plugin.

nikto -h 127.0.0.1:8000 -plugins apacheusers

La sortie sera beaucoup plus courte qu'un scan Nikto standard. Elle ressemblera à ceci :

- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ Allowed HTTP Methods: GET, HEAD
+ 1 host(s) tested
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time:           2023-10-27 10:30:01 (GMT0) (1 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Remarquez la rapidité avec laquelle le scan s'est terminé. Cela démontre l'avantage principal de l'utilisation de plugins spécifiques pour des tests ciblés.

Analyser la sortie spécifique au plugin

Dans cette dernière étape, analysons la sortie de notre scan ciblé. C'est une compétence cruciale en test de sécurité : comprendre la signification des résultats.

Regardons à nouveau la sortie de l'étape précédente :

- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
...
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

La ligne la plus importante pour notre analyse est : + 0 error(s) and 0 item(s) reported on remote host

Cette ligne nous indique que le plugin apacheusers s'est exécuté mais n'a trouvé aucune des conditions pour lesquelles il a été conçu. C'est le résultat attendu car notre cible est un serveur Python, et non un serveur Apache configuré pour exposer des répertoires d'utilisateurs.

En test d'intrusion (penetration testing), un résultat négatif (ne trouver aucune vulnérabilité) est tout aussi important qu'un résultat positif. Cela signifie que, pour ce test spécifique, le serveur semble sécurisé. En exécutant uniquement le plugin apacheusers, nous avons pu confirmer cela rapidement et efficacement, sans le bruit et le temps d'un scan complet.

Résumé

Félicitations pour avoir terminé ce laboratoire !

Vous avez appris avec succès à effectuer un scan ciblé avec Nikto en sélectionnant un plugin spécifique. Cette technique est essentielle pour des évaluations de sécurité web efficaces et ciblées.

Dans ce laboratoire, vous avez pratiqué les compétences suivantes :

  • Lister tous les plugins Nikto disponibles en utilisant l'option -list-plugins.
  • Comprendre comment choisir un plugin pertinent pour un test spécifique.
  • Utiliser l'option -plugins pour indiquer à Nikto de n'exécuter que le(s) plugin(s) spécifié(s).
  • Exécuter un scan ciblé et analyser la sortie concise et spécifique au plugin.

En maîtrisant cette compétence, vous pouvez accélérer considérablement votre flux de travail de test et concentrer vos efforts sur les vulnérabilités qui comptent le plus pour une cible donnée.