Nikto - Une vulnérabilité d'application Web et un scanner CGI pour les serveurs Web

Nikto - Une vulnérabilité d'application Web et un scanner CGI pour les serveurs Web

Scanner Web Nikto est un autre bon à avoir un outil pour tout arsenal de l'administrateur Linux. Il s'agit d'un scanner Web open source publié sous la licence GPL, qui est utilisée pour effectuer des tests complets sur les serveurs Web pour plusieurs éléments, y compris 6500 Potentiellement dangereux des dossiers/ /CGI.

Lire suggérée: WPSEKU - Un scanner de vulnérabilité pour trouver des problèmes de sécurité dans WordPress

Il est écrit par Chris Solo et David lodge pour Vulnérabilité Évaluation, il vérifie les versions obsolètes sur 1250 Serveurs Web et plus 270 Problèmes spécifiques à la version. Il analyse également et rapporte les logiciels et plugins obsolètes obsolètes.

Caractéristiques du scanner Web Nikto

  1. Prend en charge SSL
  2. Prend en charge le proxy HTTP complet
  3. Prend en charge le texte, HTML, XML et CSV pour enregistrer les rapports.
  4. SCAR pour plusieurs ports
  5. Peut scanner plusieurs serveurs en prenant des entrées de fichiers comme la sortie NMAP
  6. Soutenir les identifiants Libwhisker
  7. Suffisamment capable pour identifier les logiciels installés avec des en-têtes, des fichiers et des favicons
  8. Journaux pour les métasploit
  9. Rapports pour les en-têtes «inhabituels».
  10. Énumération de l'utilisateur Apache et CGIWrap
  11. Authentifier les hôtes avec Basic et NTLM
  12. Les analyses peuvent être automatiquement payées à un moment spécifié.

Exigences de Nikto

Un système avec de base Perler, Modules perl, OpenSSL L'installation devrait permettre Nikto courir. Il a été complètement testé sur les fenêtres, Mac OS X et divers Unix/ /Linux distributions telles que chapeau rouge, Debian, Ubuntu, Revenir en arrière, etc.

Installation du scanner Web Nikto sur Linux

La plupart des systèmes Linux d'aujourd'hui sont livrés avec préinstallation Perler, Modules perl, et OpenSSL paquets. Si ce n'est pas inclus, vous pouvez les installer en utilisant l'utilitaire de gestion de package système par défaut appelé Miam ou apt-get.

Sur Red Hat / Centos / Fedora
[[Protégé par e-mail]] # yum install perl perl-net-ssleay openssl
Sur Debian / Ubuntu / Linux Mint
[[Protégé par e-mail]] # apt-get install perl openssl libnet-ssleay-perl

Ensuite, clone la dernière écurie Nikto Fichiers source de son référentiel GitHub, emménager dans Nikto / programmes / Répertoire et exécutez-le à l'aide de Perl:

$ git clone https: // github.com / sullo / nikto.git $ cd nikto / programmes $ perl nikto.PL -H 
Échantillon de sortie
L'hôte de l'option nécessite un argument -config + Utilisez ce fichier config-Display + Affonter / désactiver les sorties d'affichage -DBCheck Check Database et d'autres fichiers clés pour les erreurs de syntaxe -format + enregistrer le fichier (-o) -HELP Informations d'aide étendue -Host + Target Host -id + Authentification hôte à utiliser, Format est ID: pass ou ID: Pass: Realm -List-Plugins Liste Tous les plugins disponibles -output + Write Sortie dans ce fichier -Nossl Disacts Utilisation de SSL -NO404 Désactifs 404 CHECKS -PLUGINS + Liste des plugins à exécuter (par défaut : All) -port + port à utiliser (par défaut 80) -ROOT + Valeur racine de prédépendance à toutes les demandes, format est / répertoire -SSL Force SSL Mode sur le port -tuning + Scan Tuning -Timeout + Timeout pour les demandes (par défaut 10 secondes) - Bases de données de mise à jour update et les plugins de CIRT.Versions de plugin d'impression et de base de données net -version -vhost + hôte virtuel (pour l'en-tête hôte) + nécessite une valeur Remarque: Il s'agit de la sortie de l'aide courte. Utiliser -h pour le texte de l'aide complète. 

Le "L'hôte d'option nécessite un argument"Est clairement révélateur que nous n'avons pas inclus les paramètres nécessaires lors d'un test. Nous devons donc ajouter un paramètre de base nécessaire pour effectuer un essai.

Tests de base

Le scan de base nécessite un hôte que vous souhaitez cibler, par défaut, il scanne le port 80 Si rien n'est spécifié. L'hôte peut être un nom d'hôte ou un Adresse IP d'un système. Vous pouvez spécifier un hôte en utilisant "-H" option.

Par exemple, je veux faire un scan sur une IP 172.16.27.56 sur le port TCP 80.

[[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.PL -H 172.16.27.56
Échantillon de sortie
- Nikto v2.1.5 ------------------------------------------------- -------------------------- + IP cible: 172.16.27.56 + nom d'hôte cible: exemple.Com + Port cible: 80 + Heure de début: 2014-01-10 00:48:12 (GMT5.5) ------------------------------------------------ --------------------------- + serveur: Apache / 2.2.15 (CentOS) + En-tête de SPRIED X-Powerred-By: PHP / 5.3.3 + L'en-tête anti-Clickjacking X-Frame-Options n'est pas présent. + Le serveur fuit les inodes via ETAGS, en-tête trouvé avec un fichier / robots.txt, inode: 5956160, taille: 24, mtime: 0x4d4865a054e32 + fichier / dir '/' dans les robots.TXT a renvoyé un code HTTP non plus forcé ou redirigé (200) + "Robots.txt "contient 1 entrée qui doit être affichée manuellement. + Apache / 2.2.15 semble être obsolète (le courant est au moins Apache / 2.2.22). Apache 1.3.42 (version finale) et 2.0.64 sont également courants. + Fichiers d'index multiples trouvés: index.PHP, index.HTM, index.HTML + Debug HTTP Verb peut afficher des informations de débogage du serveur. Voir http: // msdn.Microsoft.com / en-us / bibliothèque / e8z01xdh% 28vs.80% 29.ASPX pour plus de détails. + OSVDB-877: la méthode de trace HTTP est active, suggérant que l'hôte est vulnérable à XST + OSVDB-3233: / phpinfo.PHP: contient des informations de configuration PHP + OSVDB-12184: / index.php?= PHPB8B5F2A0-3C92-11D3-A3A9-4C7B08C10000: PHP révèle des informations potentiellement sensibles via certaines demandes HTTP qui contiennent des chaînes de requête spécifiques. + OSVDB-3092: / Test.HTML: Cela pourrait être intéressant… + OSVDB-3268: / Icons /: Indexation du répertoire trouvé. + OSVDB-3233: / Icons / Readme: Fichier par défaut Apache trouvé. + /connecter.php?chemin = http: // cirt.net / rfiinc.SMS?: Chaîne de connexion de la base de données PHP MySQL PHP trouvée trouvée. + OSVDB-3092: / Test.PHP: Cela pourrait être intéressant… + 6544 éléments vérifiés: 0 Erreur (s) et 16 éléments rapportés sur l'hôte distant + Temps de fin: 2014-01-10 00:48:23 (GMT5.5) (11 secondes) -------------------------------------------- ------------------------------- + 1 hôte (s) testé

Si vous souhaitez scanner sur un autre numéro de port, ajoutez "-p"[-port] option. Par exemple, je veux faire un scan sur IP 172.16.27.56 sur le port TCP 443.

[[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.PL -H 172.16.27.56 -p 443
Échantillon de sortie
- Nikto v2.1.5 ------------------------------------------------- -------------------------- + IP cible: 172.16.27.56 + nom d'hôte cible: exemple.com + port cible: 443 -------------------------------------------- ------------------------------- + SSL Info: Sujet: / O = *.midi.com / ou = contrôle de domaine validé / cn = *.midi.compiphers: DHE-RSA-AES256-GCM-SHA384 Émetteur: / C = US / ST = Arizona / L = Scottsdale / O = Starfield Technologies, Inc./ Ou = http: // certificats.starfieldtech.com / référentiel / cn = Starfield Secure Certification Authority / Serialnumber = 10688435 + Heure de début: 2014-01-10 01:08:26 (GMT5.5) ------------------------------------------------ --------------------------- + serveur: Apache / 2.2.15 (CentOS) + Le serveur fuit les inodes via les ETAGS, en-tête trouvé avec fichier /, inode: 2817021, taille: 5, mtime: 0x4d5123482b2e9 +. + Apache / 2.2.15 semble être obsolète (le courant est au moins Apache / 2.2.22). Apache 1.3.42 (version finale) et 2.0.64 sont également courants. + Le serveur utilise un certificat générique: '*.midi.com '+ Méthodes HTTP autorisées: get, tête, post, options, trace + OSVDB-877: la méthode de trace http est active, suggérant que l'hôte est vulnérable à XST + OSVDB-3268: / icons /: indexation du répertoire trouvé. + OSVDB-3233: / Icons / Readme: Fichier par défaut Apache trouvé. + 6544 Éléments vérifiés: 0 Erreur (s) et 8 éléments rapportés sur l'hôte distant + Heure de fin: 2014-01-10 01:11:20 (GMT5.5) (174 secondes) -------------------------------------------- ------------------------------- + 1 hôte (s) testé

Vous pouvez également spécifier hôtes, ports et protocoles en utilisant un plein URL syntaxe, et il sera scanné.

[[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.Pl -h http: // 172.16.27.56:80

Vous pouvez également scanner n'importe quel site Web. Par exemple, ici j'ai fait un scan sur Google.com.

[[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.pl -h http: // www.Google.com
Échantillon de sortie
- Nikto v2.1.5 ------------------------------------------------- -------------------------- + IP cible: 173.194.38.177 + nom d'hôte cible: www.Google.Com + Port cible: 80 + Heure de début: 2014-01-10 01:13:36 (GMT5.5) ------------------------------------------------ --------------------------- + Server: GWS + Cookie Pref créé sans l'indicateur httponly + cookie NID créé sans l'indicateur httponly + en-tête uncomm «X-Frame-Options» trouvés, avec contenu: Sameorigin + En-tête un commun «X-XSS-Protection» trouvé, avec contenu: 1; MODE = BLOCK + UN COMMON EN ENILE «PROTOCOL ALTERS.Google.co.dans/?gws_rd = cr & ei = xirouomscoxbraee34dwcq + le serveur est passé de «gws» à «sffe» qui peut suggérer un waf, un équilibreur de charge ou un proxy est en place + un en-tête peu commun « Pas de répertoires CGI trouvés (utilisez «-c all» pour forcer à vérifier tous les réseaux possibles) + fichier / dir '/ groupes /' dans les robots.TXT a renvoyé un code HTTP non plus forcé ou redirigé (302)… .

La commande ci-dessus effectuera un tas de demandes HTTP (i.e. plus que 2000 tests) sur le serveur Web.

Test de port multiples

Vous pouvez également effectuer plusieurs ports scanning dans la même session. Pour scanner plusieurs ports sur le même hôte, ajoutez "-p"[-port] Option et spécifiez la liste des ports. Les ports peuvent être définis comme une gamme (i.e., 80-443), ou comme une virgule séparée (je.e., 80 443). Par exemple, je souhaite scanner un ports 80 et 443 sur l'hôte 172.16.27.56.

[[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.PL -H 172.16.27.56 -P 80 443
Échantillon de sortie
- Nikto v2.1.5 ------------------------------------------------- -------------------------- + Aucun serveur Web trouvé sur CMSSAGE.midi.com: 88 ----------------------------------------------- ---------------------------- + IP cible: 172.16.27.56 + nom d'hôte cible: exemple.Com + Port cible: 80 + Heure de début: 2014-01-10 20:38:26 (GMT5.5) ------------------------------------------------ --------------------------- + serveur: Apache / 2.2.15 (CentOS) + En-tête de SPRIED X-Powerred-By: PHP / 5.3.3 + L'en-tête anti-Clickjacking X-Frame-Options n'est pas présent. --------------------------------------------------------------------------- + IP cible: 172.16.27.56 + nom d'hôte cible: exemple.com + port cible: 443 -------------------------------------------- ------------------------------- + SSL Info: Sujet: / O = *.midi.com / ou = contrôle de domaine validé / cn = *.midi.compiphers: DHE-RSA-AES256-GCM-SHA384 Émetteur: / C = US / ST = Arizona / L = Scottsdale / O = Starfield Technologies, Inc./ Ou = http: // certificats.starfieldtech.com / référentiel / cn = Starfield Secure Certification Authority / Serialnumber = 10688435 + Heure de début: 2014-01-10 20:38:36 (GMT5.5) ------------------------------------------------ --------------------------- + serveur: Apache / 2.2.15 (CentOS) + Tous les répertoires CGI «trouvés», utilisez «-c non» pour tester aucun + Apache / 2.2.15 semble être obsolète (le courant est au moins Apache / 2.2.22). Apache 1.3.42 (version finale) et 2.0.64 sont également actuels… 

Utilisation d'un proxy

Disons un système où Nikto L'exécution a uniquement accès à l'hôte cible via un Http proxy, le test peut toujours être effectué en utilisant deux façons différentes. On utilise nikto.confli le fichier et une autre façon consiste à exécuter directement à partir du ligne de commande.

Utilisation de Nikto.fichier de confr

Ouvrir nikto.confli Fichier à l'aide de n'importe quel éditeur de ligne de commande.

[[Protégé par e-mail] Nikto-2.1.5] # vi Nikto.confli

Recherchez la variable "PROCURATION"Et non les coutumes le '#'Dès le début des lignes comme indiqué. Puis ajoutez le Hôte proxy, port, utilisateur de procuration et mot de passe. Enregistrez et fermez le fichier.

# Paramètres proxy - doit toujours être activé par -USEPROXY proxyHost = 172.16.16.37 proxyport = 8080 proxyuseur = pg proxypass = pg

Maintenant, exécutez le Nikto en utilisant "-Utiliser un proxy" option. Veuillez noter que toutes les connexions seront relayées via le Http Procuration.

[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.Pl -h localhost -p 80 -Useproxy
Échantillon de sortie
- Nikto v2.1.5 ------------------------------------------------- -------------------------- + IP cible: 127.0.0.1 + nom d'hôte cible: Port localhost + cible: 80 + Heure de début: 2014-01-10 21:28:29 (GMT5.5) ------------------------------------------------ --------------------------- + serveur: Squid / 2.6.Stable6 + récupéré via l'en-tête: 1.0 NETSERV: 8080 (Squid / 2.6.Stable6) + L'en-tête anti-Clickjacking X-Frame-Options n'est pas présent. + En-tête uncommon 'X-Squid-Error' trouvé, avec contenu: err_cache_access_denided 0 + en-tête uncommon 'x-cache-lookup' trouvé, avec contenu: aucun de netserv: 8080
En utilisant la ligne de commande

Pour exécuter le Nikto directement à partir de la ligne de commande en utilisant le "-Utiliser un proxy”Option en définissant le proxy comme argument.

[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.Pl -h localhost -USEPROXY http: // 172.16.16.37: 8080 /
Échantillon de sortie
- Nikto v2.1.5 ------------------------------------------------- -------------------------- + IP cible: 127.0.0.1 + nom d'hôte cible: Port localhost + cible: 80 + Heure de début: 2014-01-10 21:34:51 (GMT5.5) ------------------------------------------------ --------------------------- + serveur: Squid / 2.6.Stable6 + récupéré via l'en-tête: 1.0 NETSERV: 8080 (Squid / 2.6.Stable6) + L'en-tête anti-Clickjacking X-Frame-Options n'est pas présent. + En-tête uncommon 'X-Squid-Error' trouvé, avec contenu: err_cache_access_denided 0 + en-tête uncommon 'x-cache-lookup' trouvé, avec contenu: aucun de netserv: 8080

Mise à jour de Nikto

Vous pouvez mettre à jour Nikto au dernier plugins et bases de données Automatiquement, exécutez simplement le «-mise à jour" commande.

[[Protégé par e-mail] Nikto-2.1.5] # Perl Nikto.PL -Update

Si de nouvelles mises à jour sont disponibles, vous verrez une liste de nouvelles mises à jour téléchargées.

+ Récupération de 'nikto_report_csv.Plugin '+ récupération' nikto_headers.Plugin '+ récupération' nikto_cookies.Plugin '+ Récupération de' DB_TESTS '+ Récupération de' DB_PARKED_STRINGS '+ Récupération' Modifications.txt '+ cirt.Message net: veuillez soumettre des bogues Nikto à http: // trac2.assembla.com / nikto_2 / rapport / 2

Vous pouvez également télécharger et mettre à jour manuellement les plugins et bases de données Nikto à partir du http: // cirt.net / nikto / mises à jour /.

Liens de référence

Page d'accueil de Nikto