Transferring Files
Last updated
Last updated
Durante cualquier prueba de penetración, es probable que necesitemos transferir archivos al servidor remoto, como scripts de enumeración o exploits, o transferir datos de vuelta a nuestro host de ataque. Si bien herramientas como Metasploit con un shell Meterpreter nos permiten usar el Upload
comando para subir un archivo, necesitamos aprender métodos para transferir archivos con un shell inverso estándar.
Hay muchos métodos para lograr esto. Un método consiste en ejecutar un en nuestra máquina y luego usar wget
o cURL
para descargar el archivo en el host remoto. Primero, accedemos al directorio que contiene el archivo que necesitamos transferir y ejecutamos un servidor HTTP de Python.
Ahora que hemos configurado un servidor de escucha en nuestra máquina, podemos descargar el archivo en el host remoto en el que tenemos ejecución de código.
Otro método para transferir archivos sería usar scp
, siempre que tengamos las credenciales de usuario SSH en el host remoto.
En algunos casos, es posible que no podamos transferir el archivo. Por ejemplo, el host remoto podría tener protecciones de firewall que nos impidan descargar un archivo de nuestro equipo. En este tipo de situación, podemos usar un truco sencillo para codificar el archivo en base64
y luego pegar la base64
cadena en el servidor remoto y decodificarla. Por ejemplo, si quisiéramos transferir un archivo binario llamado shell
, podríamos codificarlo en base64
de la siguiente manera
Ahora, podemos copiar la cadena en base64
, ir al host remoto y usarla base64 -d
para decodificarla y canalizar la salida a un archivo.
Como podemos ver, al ejecutar el file
comando en el shell
archivo, indica que es un binario ELF, lo que significa que lo transferimos correctamente. Para asegurarnos de no haber dañado el archivo durante el proceso de codificación/decodificación, podemos comprobar su hash MD5. En nuestra máquina, podemos ejecutar md5sum.
Ahora, podemos ir al servidor remoto y ejecutar el mismo comando en el archivo que transferimos.
Para validar el formato de un archivo, podemos ejecutar el comando en él.