πΎAtaques a FTP
El File Transfer Protocol (FTP
) es un protocolo de red estΓ‘ndar que se utiliza para transferir archivos entre computadoras. TambiΓ©n realiza operaciones de directorios y archivos, como cambiar el directorio de trabajo, enumerar archivos y cambiar el nombre y eliminar directorios o archivos. De forma predeterminada, FTP escucha en el puerto TCP/21
.
Para atacar un Servidor FTP podemos abusar de una mala configuraciΓ³n o de privilegios excesivos, explotar vulnerabilidades conocidas o descubrir nuevas vulnerabilidades. Por lo tanto, despuΓ©s de acceder al Servicio FTP, debemos conocer el contenido del directorio para poder buscar informaciΓ³n sensible o crΓtica, como comentamos anteriormente.
El protocolo estΓ‘ diseΓ±ado para activar descargas y cargas con comandos. Por tanto, los archivos se pueden transferir entre servidores y clientes. Se pone a disposiciΓ³n del usuario un sistema de gestiΓ³n de archivos, conocido por el sistema operativo. Los archivos se pueden almacenar en carpetas, que pueden estar ubicadas en otras carpetas. Esto da como resultado una estructura de directorios jerΓ‘rquica. La mayorΓa de las empresas utilizan este servicio para procesos de desarrollo de software o sitios web.
EnumeraciΓ³n
Los scripts predeterminados -sC
de Nmap
incluyen el script ftp-anon. Nmap que comprueba si un servidor FTP permite inicios de sesiΓ³n anΓ³nimos. El indicador de enumeraciΓ³n de versiones -sV
proporciona informaciΓ³n interesante sobre los servicios FTP, como el banner FTP, que a menudo incluye el nombre de la versiΓ³n. Podemos utilizar el cliente ftp
o nc
para interactuar con el servicio FTP. De forma predeterminada, FTP se ejecuta en el puerto TCP 21.
Nmap
Configuraciones errΓ³neas
Como comentamos, la autenticaciΓ³n anΓ³nima se puede configurar para diferentes servicios como FTP. Para acceder con inicio de sesiΓ³n anΓ³nimo, podemos utilizar el nombre de usuario anonymous
y sin contraseΓ±a. Esto serΓ‘ peligroso para la empresa si no se han configurado correctamente los permisos de lectura y escritura para el servicio FTP. Porque con el inicio de sesiΓ³n anΓ³nimo, la empresa podrΓa haber almacenado informaciΓ³n confidencial en una carpeta a la que el usuario anΓ³nimo del servicio FTP podrΓa tener acceso.
Esto nos permitirΓa descargar esta informaciΓ³n confidencial o incluso cargar scripts peligrosos. Utilizando otras vulnerabilidades, como el recorrido de ruta en una aplicaciΓ³n web, podrΓamos averiguar dΓ³nde se encuentra este archivo y ejecutarlo como cΓ³digo PHP, por ejemplo.
AutenticaciΓ³n anΓ³nima
Una vez que obtengamos acceso a un servidor FTP con credenciales anΓ³nimas, podremos empezar a buscar informaciΓ³n interesante. Podemos usar los comandos ls
y cd
para movernos por directorios como en Linux. Para descargar un solo archivo, usamos get
y para descargar varios archivos, podemos usar mget
. Para operaciones de carga, podemos usar put
para un archivo simple o mput
para mΓΊltiples archivos. Podemos utilizarlo help
en la sesiΓ³n del cliente FTP para obtener mΓ‘s informaciΓ³n.
En el mΓ³dulo EnumeraciΓ³n, cubrimos informaciΓ³n detallada sobre posibles configuraciones incorrectas de dichos servicios. Por ejemplo, se pueden aplicar muchas configuraciones diferentes a un servidor FTP, y algunas de ellas conducen a diferentes opciones que podrΓan provocar posibles ataques contra ese servicio. Sin embargo, este mΓ³dulo se centrarΓ‘ en ataques especΓficos en lugar de encontrar configuraciones errΓ³neas individuales.
Ataques especΓficos del protocolo
Muchos ataques y mΓ©todos diferentes se basan en protocolos. Sin embargo, es esencial tener en cuenta que no estamos atacando los protocolos individuales en sΓ, sino los servicios que los utilizan. Dado que existen decenas de servicios para un solo protocolo y procesan la informaciΓ³n correspondiente de forma diferente, veremos algunos.
Fuerza bruta
Si no hay autenticaciΓ³n anΓ³nima disponible, tambiΓ©n podemos forzar el inicio de sesiΓ³n en los servicios FTP utilizando una lista de nombres de usuario y contraseΓ±as generados previamente. Existen muchas herramientas diferentes para realizar un ataque de fuerza bruta. Exploremos uno de ellos, Medusa . Con Medusa
, podemos usar la opciΓ³n -u
para especificar un ΓΊnico usuario al que apuntar, o puede usar la opciΓ³n -U
para proporcionar un archivo con una lista de nombres de usuarios. La opciΓ³n -P
es para un archivo que contiene una lista de contraseΓ±as. Podemos usar la opciΓ³n -M
y el protocolo al que nos dirigimos (FTP) y la opciΓ³n -h
para el nombre de host o direcciΓ³n IP de destino.
Nota: Aunque podemos encontrar servicios vulnerables a la fuerza bruta, la mayorΓa de las aplicaciones actuales previenen este tipo de ataques. Un mΓ©todo mΓ‘s eficaz es el Password Spraying
Fuerza bruta con Medusa
FTP Bounce Attack
Un ataque FTP Bounce es un ataque de red que utiliza servidores FTP para entregar trΓ‘fico saliente a otro dispositivo de la red. El atacante utiliza un comando PORT
para engaΓ±ar a la conexiΓ³n FTP para que ejecute comandos y obtenga informaciΓ³n de un dispositivo distinto del servidor previsto.
Considere que estamos apuntando a un servidor FTP FTP_DMZ
expuesto a Internet. Otro dispositivo dentro de la misma red Internal_DMZ
no estΓ‘ expuesto a Internet. Podemos utilizar la conexiΓ³n al servidor FTP_DMZ
para escanear Internal_DMZ
mediante el ataque FTP Bounce y obtener informaciΓ³n sobre los puertos abiertos del servidor. Luego, podemos usar esa informaciΓ³n como parte de nuestro ataque contra la infraestructura.
Con nmap podemos usar la opciΓ³n -b
para realizar un ataque de rebote FTP:
Γltimas vulnerabilidades FTP
Al analizar las vulnerabilidades mΓ‘s recientes, centraremos esta secciΓ³n y las siguientes en uno de los ataques mostrados anteriormente y lo presentaremos de la manera mΓ‘s simple posible sin entrar en demasiados detalles tΓ©cnicos. Esto deberΓa ayudarnos a facilitar el concepto de ataque a travΓ©s de un ejemplo relacionado con un servicio especΓfico para lograr una mejor comprensiΓ³n.
En este caso, discutiremos la vulnerabilidad CoreFTP before build 727
asignada al CVE-2022-22836 . Esta vulnerabilidad es para un servicio FTP que no procesa correctamente la solicitud HTTP PUT
y genera una vulnerabilidad authenticated directory
/ path traversal,
y arbitrary file write
. Esta vulnerabilidad nos permite escribir archivos fuera del directorio al que tiene acceso el servicio.
El concepto del ataque
Este servicio FTP utiliza una solicitud HTTP POST
para cargar archivos. Sin embargo, el servicio CoreFTP permite una PUT
solicitud HTTP, que podemos usar para escribir contenido en archivos. Echemos un vistazo al ataque segΓΊn nuestro concepto. El exploit de este ataque es relativamente sencillo y se basa en un ΓΊnico cURL
comando.
ExplotaciΓ³n CoreFTP
Creamos una PUT
solicitud HTTP sin formato ( -X PUT
) con autenticaciΓ³n bΓ‘sica ( --basic -u <username>:<password>
), la ruta del archivo ( --path-as-is https://<IP>/../../../../../whoops
) y su contenido ( --data-binary "PoC."
) con este comando. AdemΓ‘s, especificamos el encabezado del host ( -H "Host: <IP>"
) con la direcciΓ³n IP de nuestro sistema de destino.
El concepto de ataque

En resumen, el proceso real malinterpreta la entrada de la ruta por parte del usuario. Esto hace que se omita el acceso a la carpeta restringida. Como resultado, los permisos de escritura en la solicitud HTTP PUT
no estΓ‘n adecuadamente controlados, lo que lleva a que podamos crear los archivos que queramos fuera de las carpetas autorizadas. Sin embargo, nos saltaremos la explicaciΓ³n del proceso Basic Auth
y pasaremos directamente a la primera parte del exploit.
Recorrido del directorio
Paso
Recorrido del directorio
Concepto de ataques - CategorΓa
1.
El usuario especifica el tipo de solicitud HTTP con el contenido del archivo, incluidos los caracteres de escape para salir del Γ‘rea restringida.
Source
2.
El proceso toma y procesa el tipo modificado de solicitud HTTP, el contenido del archivo y la ruta ingresada por el usuario.
Process
3.
La aplicaciΓ³n comprueba si el usuario estΓ‘ autorizado a estar en la ruta especificada. Dado que las restricciones solo se aplican a una carpeta especΓfica, todos los permisos que se le otorgan se omiten cuando sale de esa carpeta mediante el recorrido del directorio.
Privileges
4.
El destino es otro proceso que tiene la tarea de escribir el contenido especificado del usuario en el sistema local.
Destination
Hasta este punto, hemos omitido las restricciones impuestas por la aplicaciΓ³n usando los caracteres de escape ( ../../../../
) y llegamos a la segunda parte, donde el proceso escribe el contenido que especificamos en un archivo de nuestra elecciΓ³n. AquΓ es cuando el ciclo comienza de nuevo, pero esta vez para escribir contenidos en el sistema de destino.
Escritura de archivos arbitrarios
Paso
Escritura de archivos arbitrarios
Concepto de ataques - CategorΓa
5.
La misma informaciΓ³n que el usuario ingresΓ³ se utiliza como fuente. En este caso, el nombre del archivo ( whoops
) y el contenido ( --data-binary "PoC."
).
Source
6.
El proceso toma la informaciΓ³n especificada y procede a escribir el contenido deseado en el archivo especificado.
Process
7.
Dado que se omitieron todas las restricciones durante la vulnerabilidad de cruce de directorio, el servicio aprueba la escritura del contenido en el archivo especificado.
Privileges
8.
El nombre de archivo especificado por el usuario ( whoops
) con el contenido deseado ( "PoC."
) ahora sirve como destino en el sistema local.
Destination
Una vez completada la tarea, podremos encontrar este archivo con el contenido correspondiente en el sistema de destino.
Objetivo del sistema
Caso prΓ‘ctico
Pregunta 1
ΒΏEn quΓ© puerto se ejecuta el servicio FTP en el host?
Vemos que en este host el servicio FTP se ejecuta en el puerto 2121 en vez del puerto 21 que se suele utilizar para FTP.
Pregunta 2
ΒΏQuΓ© nombre de usuario estΓ‘ disponible para el servidor FTP?
Lo primero que vamos a probar es el login anonymous:
Funciona y conseguimos acceder a los archivos del servidor. Hay 2 listas de usuarios y contraseΓ±as que nos vamos a descargar:
Tenemos 1 lista de usuarios y una lista de contraseΓ±as, por lo que vamos a hacer bruteforce al servicio FTP. Por ver un ejemplo distinto al visto en esta secciΓ³n, vamos a usar hydra:
Encontramos el usuario y contraseΓ±a:
Pregunta 3
Utiliza el nombre de usuario descubierto y su contraseΓ±a para iniciar sesiΓ³n a travΓ©s de SSH y obtener el archivo flag.txt. EnvΓa el contenido como respuesta.
Γltima actualizaciΓ³n
ΒΏTe fue ΓΊtil?