Effectuer un scan avec authentification de base dans Nikto

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Nikto est un scanner de serveurs web open-source populaire qui effectue des tests complets sur les serveurs web pour plusieurs é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.

De nombreuses applications web disposent de zones restreintes accessibles uniquement après que l'utilisateur ait fourni des identifiants valides. L'authentification HTTP Basic est l'une des méthodes les plus simples utilisées pour protéger ces zones. Pour effectuer une évaluation de sécurité approfondie, il est crucial de scanner ces sections authentifiées.

Dans ce laboratoire, vous apprendrez à utiliser Nikto pour effectuer un scan authentifié sur un répertoire web protégé par l'authentification Basic. Vous utiliserez l'option -id pour fournir les identifiants nécessaires, permettant à Nikto d'accéder et de tester les ressources protégées pour détecter les vulnérabilités.

Identifier une ressource web protégée par authentification Basic

Dans cette étape, vous allez d'abord vérifier que la ressource web cible est bien protégée par l'authentification Basic. Une méthode courante pour vérifier cela est d'utiliser la commande curl pour inspecter les en-têtes HTTP renvoyés par le serveur lorsque vous essayez d'accéder à la ressource.

Une ressource non protégée renverra un statut 200 OK, tandis qu'une ressource protégée renverra un statut 401 Unauthorized accompagné d'un en-tête WWW-Authenticate, indiquant le type d'authentification requis.

Essayons d'accéder au répertoire protégé http://localhost/protected/ en utilisant curl avec l'option -I, qui ne récupère que les en-têtes HTTP.

Exécutez la commande suivante dans votre terminal :

curl -I http://localhost/protected/

Vous devriez voir une sortie similaire à la suivante. Notez le statut HTTP/1.1 401 Unauthorized et l'en-tête WWW-Authenticate: Basic realm="...". Cela confirme que le répertoire est protégé.

HTTP/1.1 401 Unauthorized
Date: [current_date]
Server: Apache/2.4.52 (Ubuntu)
WWW-Authenticate: Basic realm="Restricted Content"
Content-Type: text/html; charset=iso-8859-1

Obtenir le nom d'utilisateur et le mot de passe requis

Dans cette étape, nous allons prendre connaissance des identifiants nécessaires pour accéder à la zone protégée. Dans un test d'intrusion réel, vous pourriez obtenir ces informations par divers moyens tels que la devinette de mots de passe, leur découverte dans des dépôts de code publics, ou par ingénierie sociale.

Pour ce laboratoire, l'environnement a été pré-configuré avec un nom d'utilisateur et un mot de passe spécifiques. Vous aurez besoin de ces identifiants pour les étapes suivantes afin d'effectuer un scan authentifié.

Les identifiants sont :

  • Nom d'utilisateur : labex
  • Mot de passe : P@ssw0rd123

Il n'y a pas de commandes à exécuter dans cette étape. Notez simplement les identifiants ci-dessus et passez à l'étape suivante, où vous les utiliserez pour vous authentifier.

Utiliser l'option -id avec le format 'utilisateur:motdepasse'

Dans cette étape, vous découvrirez l'option -id de Nikto, qui est utilisée pour fournir des identifiants pour l'authentification HTTP. Le format est une chaîne unique contenant le nom d'utilisateur et le mot de passe, séparés par un deux-points (:).

La syntaxe est : -id <nom_utilisateur>:<mot_de_passe>

Avant d'utiliser cela avec Nikto, il est de bonne pratique de vérifier que les identifiants fonctionnent. Vous pouvez le faire à nouveau avec curl, cette fois en utilisant l'option --user pour fournir les identifiants.

Exécutez la commande suivante pour accéder à la page protégée avec les identifiants corrects :

curl --user labex:P@ssw0rd123 http://localhost/protected/

Si les identifiants sont corrects, le serveur accordera l'accès et renverra le contenu de la page, comme montré ci-dessous. Cela confirme que vous pouvez vous authentifier avec succès.

This is a protected page accessible only with credentials.

Maintenant que vous avez confirmé les identifiants et compris le format, vous êtes prêt à les utiliser dans un scan Nikto.

Exécuter le scan authentifié sur la zone protégée

Dans cette étape, vous combinerez vos connaissances des étapes précédentes pour exécuter un scan authentifié complet avec Nikto. Vous devez spécifier l'hôte cible et les identifiants d'authentification.

La structure de la commande sera :

  • nikto : Le programme à exécuter.
  • -h http://localhost/protected/ : L'option -h (host), pointant directement vers le répertoire que vous souhaitez scanner.
  • -id labex:P@ssw0rd123 : L'option -id avec le nom d'utilisateur et le mot de passe.

Exécutez maintenant la commande complète dans votre terminal. Le scan peut prendre quelques minutes pour se terminer.

nikto -h http://localhost/protected/ -id labex:P@ssw0rd123

Nikto commencera le scan. Comme vous avez fourni des identifiants valides, il pourra accéder à http://localhost/protected/ et tester les vulnérabilités dans ce répertoire. La sortie ressemblera à ceci :

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         [scan_start_time]
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present.
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
+ /: Server may leak inodes via ETags, header found with file /, fields: 0x1ed 0x5f7e21e8a2e80
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD.
+ /: Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54).
+ 8142 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           [scan_end_time] (30 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Vérifier que Nikto a accédé avec succès aux ressources protégées

Dans cette étape, vous analyserez la sortie du scan pour confirmer que Nikto s'est authentifié avec succès et a scanné la zone protégée. Un indicateur clé d'un scan authentifié réussi est l'absence d'erreurs d'authentification généralisées.

Une bonne pratique pour analyser les résultats d'un scan est de sauvegarder la sortie dans un fichier. Vous pouvez le faire avec l'option -o (output). Réexécutons le scan et sauvegardons le rapport dans un fichier texte nommé nikto_report.txt.

nikto -h http://localhost/protected/ -id labex:P@ssw0rd123 -o nikto_report.txt -Format txt

Une fois le scan terminé, un fichier nommé nikto_report.txt sera créé dans votre répertoire actuel (~/project). Vous pouvez inspecter ce fichier pour vérifier les résultats. Un moyen rapide de vérifier le succès est de regarder la ligne de résumé indiquant le nombre d'erreurs.

Utilisez la commande grep pour rechercher la ligne contenant "error(s)" dans votre fichier de rapport :

grep "error(s)" nikto_report.txt

La sortie devrait afficher 0 error(s), ce qui confirme que Nikto n'a pas rencontré de problèmes tels que 401 Unauthorized lors des requêtes. Ceci, combiné à la liste des découvertes, prouve que le scan authentifié a été un succès.

+ 8142 requests: 0 error(s) and 5 item(s) reported on remote host

Résumé

Félicitations pour avoir terminé ce laboratoire ! Vous avez réussi à effectuer un scan de vulnérabilités web authentifié à l'aide de Nikto.

Dans ce laboratoire, vous avez appris à :

  • Identifier une ressource web protégée par l'authentification HTTP Basic à l'aide de curl.
  • Comprendre le format des identifiants requis pour un scan authentifié.
  • Utiliser l'option -id de Nikto pour fournir un nom d'utilisateur et un mot de passe.
  • Exécuter un scan sur un répertoire protégé et vérifier son succès en analysant la sortie.

Maîtriser le scan authentifié est une compétence essentielle pour tout professionnel de la sécurité, car il permet une évaluation beaucoup plus approfondie et complète de la posture de sécurité d'une application web en découvrant les vulnérabilités cachées derrière un mur de connexion.