Interpréter les résultats d'une analyse Nikto standard

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.

Comprendre comment lire et interpréter les résultats d'un scan Nikto est une compétence fondamentale pour toute personne travaillant dans la cybersécurité, des testeurs d'intrusion aux administrateurs système. La sortie peut sembler cryptique au début, mais elle est structurée pour fournir des informations précieuses sur la configuration d'un serveur web et ses faiblesses potentielles en matière de sécurité.

Dans ce laboratoire, vous apprendrez à décortiquer un rapport de scan Nikto standard. Pour gagner du temps et vous concentrer sur l'interprétation, un fichier de résultats de scan pré-généré vous a été fourni. Vous analyserez ce fichier pour identifier les informations cibles, différencier les découvertes, comprendre les références aux vulnérabilités et examiner le résumé final.

Localiser la section récapitulative des informations de la cible

Dans cette étape, vous allez examiner le début du rapport Nikto pour identifier les informations de base sur la cible scannée. Cette section est cruciale car elle confirme ce qui a été testé et le logiciel serveur de base détecté.

Un fichier de rapport d'exemple nommé nikto_scan_results.txt a été créé dans votre répertoire ~/project. Utilisez la commande cat pour afficher son contenu dans le terminal.

cat ~/project/nikto_scan_results.txt

Examinez les premières lignes de la sortie. Ce bloc initial fournit un résumé de la cible.

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          172.17.0.2
+ Target Hostname:    labex-server
+ Target Port:        80
+ Start Time:         2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)

Voici ce que signifient ces lignes :

  • Target IP : L'adresse IP du serveur qui a été scanné.
  • Target Hostname : Le nom d'hôte du serveur.
  • Target Port : Le port TCP sur lequel le service web est en cours d'exécution (généralement 80 pour HTTP ou 443 pour HTTPS).
  • Server : Le logiciel serveur et sa version tels qu'indiqués dans l'en-tête HTTP Server. Dans ce cas, il s'agit d'Apache version 2.4.52 fonctionnant sous Ubuntu.

Identifier les découvertes informatives et les références OSVDB

Dans cette étape, vous apprendrez à identifier les découvertes informatives, qui sont marquées par un symbole +. Il ne s'agit pas toujours de vulnérabilités directes, mais elles fournissent un contexte utile sur la configuration du serveur.

De nombreuses découvertes dans Nikto sont associées à un identifiant OSVDB (Open Source Vulnerability Database). Bien que le projet OSVDB ne soit plus actif, ces identifiants peuvent toujours être utiles pour des références historiques et pour rechercher des détails sur un problème spécifique.

Utilisons la commande grep pour filtrer le rapport et afficher uniquement les lignes qui représentent des découvertes. Dans la sortie de Nikto, ces lignes commencent par un +.

grep "^\+" ~/project/nikto_scan_results.txt

Vous verrez une liste de toutes les découvertes du scan.

+ Target IP:          172.17.0.2
+ Target Hostname:    labex-server
+ Target Port:        80
+ Start Time:         2023-10-27 10:30:00 (GMT0)
+ Server: Apache/2.4.52 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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.
+ Uncommon header 'x-powered-by' found, with contents: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ OSVDB-3233: /icons/README: The Apache web server is configured to return a valid response to a request for /icons/README.
+ /index.php: PHP is installed.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time:           2023-10-27 10:38:20 (GMT0) (500 seconds)
+ 1 host(s) tested

Remarquez la ligne + OSVDB-3233: /icons/README: .... Cela indique une découverte informative (ID 3233) liée à un fichier README accessible publiquement dans le répertoire /icons/, ce qui est courant sur les serveurs Apache.

Différencier les vulnérabilités à faible et à haut risque

Dans cette étape, vous apprendrez à distinguer les découvertes qui représentent un faible risque de celles qui pourraient être plus préoccupantes. Nikto n'attribue pas de niveau de gravité ; il vous appartient, en tant qu'analyste, d'interpréter les résultats en fonction du contexte.

Les découvertes à faible risque sont généralement liées aux bonnes pratiques de sécurité qui ne sont pas implémentées. Par exemple : + The anti-clickjacking X-Frame-Options header is not present. Il s'agit d'un en-tête de sécurité manquant. Bien qu'il soit de bonnes pratiques de l'avoir, son absence seule ne conduit généralement pas à une compromission directe.

Les découvertes à risque plus élevé indiquent souvent une divulgation d'informations ou une mauvaise configuration qui pourrait être exploitée. Par exemple : + /admin/: Directory indexing found. C'est plus grave. L'indexation de répertoire permet à un attaquant de voir tous les fichiers et sous-répertoires du répertoire /admin/, révélant potentiellement des fichiers sensibles, la structure de l'application ou des fichiers de sauvegarde.

Utilisons grep pour isoler cette découverte à risque plus élevé du rapport.

grep "Directory indexing" ~/project/nikto_scan_results.txt

Cette commande vous montrera toutes les occurrences où l'indexation de répertoire a été découverte.

+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.

Voir ces résultats devrait inciter un analyste à enquêter immédiatement sur ces répertoires pour déterminer si des informations sensibles sont exposées.

Comprendre la signification des découvertes de répertoires CGI

Dans cette étape, vous vous concentrerez sur les découvertes relatives aux répertoires CGI. CGI (Common Gateway Interface) est un protocole standard qui permet aux serveurs web d'exécuter des programmes externes, tels que des scripts. Ces répertoires sont une cible fréquente pour les attaquants car ils contiennent souvent des fichiers exécutables susceptibles de présenter des vulnérabilités.

Nikto recherche spécifiquement les répertoires CGI courants tels que /cgi-bin/. La découverte d'un tel répertoire et des scripts qu'il contient est un événement significatif.

Utilisons grep pour trouver toutes les lignes du rapport qui mentionnent /cgi-bin/.

grep "/cgi-bin/" ~/project/nikto_scan_results.txt

La sortie montre deux découvertes relatives à ce répertoire.

+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...

La première ligne confirme que le répertoire /cgi-bin/ lui-même a l'indexation de répertoire activée, ce qui constitue une découverte à haut risque comme discuté à l'étape précédente. La deuxième ligne indique que Nikto a trouvé un script test.cgi. Les scripts de test sont souvent laissés par les développeurs et peuvent parfois présenter des vulnérabilités ou divulguer des informations sur l'environnement du serveur. Un analyste signalerait cela pour une investigation manuelle.

Examiner les statistiques récapitulatives de fin d'analyse

Dans cette dernière étape, vous examinerez la section récapitulative à la fin du rapport Nikto. Cette section fournit un aperçu rapide de l'exécution et de la portée de l'analyse.

Pour afficher facilement les dernières lignes du fichier, vous pouvez utiliser la commande tail. Visualisons les 10 dernières lignes du rapport.

tail -n 10 ~/project/nikto_scan_results.txt

Ceci affichera la fin du rapport, qui inclut les statistiques récapitulatives.

+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time:           2023-10-27 10:38:20 (GMT0) (500 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Voici une explication des lignes récapitulatives clés :

  • 8123 requests: 0 error(s) and 11 item(s) reported... : Ceci vous indique que Nikto a envoyé 8 123 requêtes HTTP au serveur, n'a rencontré aucune erreur et a trouvé 11 éléments d'intérêt.
  • End Time : Ceci affiche l'horodatage de la fin de l'analyse et sa durée totale.
  • 1 host(s) tested : Ceci confirme que l'analyse a été effectuée sur une seule cible.

Ce résumé est utile pour comprendre l'ampleur de l'analyse et obtenir un décompte général des découvertes.

Résumé

Dans ce laboratoire, vous avez acquis les compétences essentielles pour interpréter un rapport d'analyse Nikto standard. Vous avez pratiqué une approche systématique pour analyser la sortie, en commençant par les informations de base sur la cible et en passant à des découvertes plus détaillées.

Vous avez appris à :

  • Identifier l'adresse IP, le port et la bannière logicielle du serveur cible.
  • Reconnaître les découvertes informatives et la signification des références OSVDB.
  • Différencier les découvertes à faible risque (comme les en-têtes manquants) des découvertes à risque plus élevé (comme l'indexation de répertoire).
  • Comprendre l'importance des découvertes de répertoires CGI.
  • Examiner le résumé de fin d'analyse pour un aperçu général.

Ce processus d'analyse structurée est essentiel pour transformer la sortie brute d'un scanner en renseignements exploitables pour sécuriser les applications web.