2010
05.21

nikto [Tuto] Scans de vulnérabilités web avec Nikto

Nikto est un scanner de vulnérabilités Open Source de sites web. Présentation de cet outil simple et puissant pour vérifier la sécurité de vos serveurs web !

Présentation de l’outil

Ses fonctionnalités

  • Auditer vos serveurs web à la recherche de failles diverses, et ainsi de voir si votre serveur est secure.
  • Il est entre autres capable de tester près de 6000 fichiers  potentiellement vulnérables/CGI.
  • Vérifier si la version de votre serveur est obsolète ainsi que les logiciels et modules qui utilisés par ce dernier.
  • Scan des répertoires pouvant contenir des informations sensibles.
  • Support des connections SSL.
  • Possibilité d’utiliser un proxy.
  • Possibilité d’intégrer de nombreux plugins.
  • Possibilité de scanner les ports en le couplant avec Nmap.

Avantages

  • Rapidité des tests.
  • Nombre de failles testées.
  • Informations exhaustives.

Inconvénients

  • Piètre furtivité. Son but premier est la rapidité, si vous voulez faire votre vilain sur un site ne vous appartenant pas, je doute que cela soit l’outil que vous devriez choisir ! En revanche Nikto intègre la possibilité d’utiliser un proxy…
  • Aisément repérable dans les logs. Encore une fois, il est préférable de n’utiliser Nikto que sur un serveur que vous possédez ou dont la personne est consentante… Et encore une fois, il y a toujours moyen outre ces petits désagréments (proxy, IDS evasion,…)
  • Génération non-négligeable de faux-positifs…

Utilisation de Nikto

Commençons par l’installation de Nikto, pour cela 3 contextes possibles :

  • Vous êtes sur un Linux classique.

–> Télécharger la dernière version de Nikto (2.1.1 actuellement)

–> L’extraire : #tar -xvzf nikto-current.tar.gz

–> Se rendre dans le répertoire de Nikto : #cd nikto-current

–> L’utilisation se fait en utilisant la commande ./nikto.pl avec ses paramètres derrière.

  • Vous êtes sur Backtrack.

–> Nikto fait bien entendu partie des outils intégré à BackTrack (je prend l’exemple de BackTrack 4 en tout cas).

–> Il se situe dans /pentest/scanners/nikto   (Nikto2  est intégré a BackTrack, mais je ne sais plus si le répertoire se nomme nikto ou nikto, à vérifier puis j’éditerais…!).

–> L’utilisation se fait en utilisant la commande ./nikto.pl avec ses paramètres derrière.

  • Vous êtes sur Zindow$ (boo c’est mal).

–> Récupérer l’archive de Nikto comme les autres.

–> Installer ActivePerl

–> Utiliser le script Nikto.pl dans une console DOS.

Update de la base de vulnérabilités

./nikto.pl -update

Tests de base

Scan basique d’un site (par défaut sur le port 80)
./nikto.pl -h <host_a_scanner>

./nikto.pl -h www.ex0dus.fr

./nikto.pl -h 192.168.0.1

Scan sur un port spécifique
./nikto.pl -h <host_a_scanner> -p 8080
A noter que pour scanner un serveur en SSL, nikto va tout d’abord tester HTTP (80) et s’il n’y arrive pas il va partir automatiquement sur HTTPS (443) donc pas besoin de le spécifier, sauf si vous êtes certains que le serveur est en SSL, dans ce cas le scan sera plus rapide, vous pouvez d’ailleurs rajouter l’option -s (-ssl).

Scan multi-ports
./nikto.pl -h <host_a_scanner> -p 20,21,25,443
Utilisation d’un proxy
./nikto.pl -h <host_a_scanner> -p 80 -useproxy
Il faudra cependant éditer le fichier nikto.conf (linux normal) ou config.txt (backtrack) et renseigner les variables suivantes :
#########################################################################################################
# PROXY STUFF
#########################################################################################################
#PROXYHOST=127.0.0.1 //@IP du proxy
#PROXYPORT=8080 //port
#PROXYUSER=proxyuserid //user (si besoin)
#PROXYPASS=proxypassword //password (si besoin)

Exemple concret avec scan d’evasion (-e 1) et récupération des logs dans un fichier texte (-Format txt -output) :
./nikto.pl -e 1 -host http://192.168.0.1/joomla12 -F txt -o my_output_file.txt
---------------------------------------------------------------------------
- Nikto 2.01/2.01 - cirt.net
+ Target IP: 192.168.1.44
+ Target Hostname: joomla12
+ Target Port: 80
+ Using IDS Evasion: Random URI encoding (non-UTF8)
+ Start Time: 2008-09-16 10:26:17
---------------------------------------------------------------------------
+ Server: Apache/2.2.3 (Debian) mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch10 mod_perl/2.0.2 Perl/v5.8.8
+ No CGI Directories found (use '-C all' to force check all possible dirs)
- Root page / redirects to: hxxp://joomla12/apache2-default/
- Retrieved X-Powered-By header: PHP/5.2.0-8+etch10
+ /robots.txt - contains 13 'disallow' entries which should be manually viewed (added to mutation file lists) (GET).
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE
+ OSVDB-877: HTTP method ('Allow' Header): 'TRACE' is typically only used for debugging and should be disabled. This message does not mean it is vulnerable to XST.
+ PHP/5.2.0-8+etch10 appears to be outdated (current is at least 5.2.4)
+ Apache/2.2.3 appears to be outdated (current is at least Apache/2.2.6). Apache 1.3.39 and 2.0.61 are also current.
+ mod_python/3.2.10 appears to be outdated (current is at least 3.3.1)
+ PHP/5.2.0-8+etch10 appears to be outdated (current is at least 5.2.4)
+ mod_perl/2.0.2 appears to be outdated (current is at least 5.8.0)
+ OSVDB-0: GET /joomla12/help/ : Help directory should not be accessible
+ OSVDB-0: GET /joomla12/index.php?module=My_eGallery : My_eGallery prior to 3.1.1.g are vulnerable to a remote execution bug via SQL command injection.
+ OSVDB-8193: GET /joomla12/index.php?module=ew_filemanager&type=admin&func=manager&pathext=../../../etc : EW FileManager for PostNuke allows arbitrary file retrieval.
+ OSVDB-12184: GET /joomla12/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 : PHP reveals potentially sensitive information via certain HTTP requests which contain specific QUERY strings.
+ OSVDB-3092: GET /joomla12/administrator/ : This might be interesting...
+ OSVDB-3092: GET /joomla12/includes/ : This might be interesting...
+ OSVDB-3093: GET /joomla12/index.php?base=test%20 : This might be interesting... has been seen in web logs from an unknown scanner.
+ OSVDB-3093: GET /joomla12/index.php?IDAdmin=test : This might be interesting... has been seen in web logs from an unknown scanner.
+ OSVDB-3093: GET /joomla12/index.php?pymembs=admin : This might be interesting... has been seen in web logs from an unknown scanner.
+ OSVDB-3093: GET /joomla12/index.php?SqlQuery=test%20 : This might be interesting... has been seen in web logs from an unknown scanner.
+ OSVDB-3093: GET /joomla12/index.php?tampon=test%20 : This might be interesting... has been seen in web logs from an unknown scanner.
+ OSVDB-3093: GET /joomla12/index.php?topic=&lt;script&gt;alert(document.cookie)&lt;/script&gt;%20 : This might be interesting... has been seen in web logs from an unknown scanner.
+ OSVDB-3761: GET /joomla12/?pattern=/etc/*&sort=name : The TCLHttpd 3.4.2 server allows directory listings via dirlist.tcl.
+ 2963 items checked: 22 item(s) reported on remote host
+ End Time: 2008-09-16 10:27:08 (51 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Les paramètres d’un evasion scan sont les suivants (ici nous avons utilisé le 1):

1 – Random URI encoding (non-UTF8)
2
– Directory self-reference (/./)
3 – Premature URL ending
4 – Prepend long random string
5 – Fake parameter
6 – TAB as request spacer
7 – Change the case of the URL
8 – Use Windows directory separator (\)

Voilà pour cette rapide présentation de l’outil Nikto, faites-en bon usage !

Sources : Backtrack-fr et Cirt

Be Sociable, Share!
  • more [Tuto] Scans de vulnérabilités web avec Nikto

1 commentaire pour l'instant

Ajoutez votre commentaire
  1. I would like to understand using nikto with -evasion options. how it could be possible to remark a nikto scan in log analysis ?