# FTP (21)

El Protocolo de transferencia de archivos es un protocolo de red para la transferencia de ficheros entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor.

### **Nmap**

Cuando lanzamos una enumeración usando Nmap, se utilizan por defecto una serie de scripts que comprueban si se permite el acceso de forma anonima.

* `anonymous:anonymous`
* `anonymous`
* `ftp:ftp`

```bash
nmap -p21 --script=ftp-anon 192.168.1.10 -vvv
nmap -sCV -p21 192.168.1.10 -vvv
```

Scripts de `nmap` utiles para este servicio:

* ftp-anon
* ftp-brute

```
nmap -p21 --script <script> 192.168.1.10
```

### **Conexión al servidor FTP**

```bash
# -A: Esta opción es específica del cliente FTP y suele utilizarse para activar 
# el modo ASCII  de transferencia de archivos. En este modo, los archivos se 
# transfieren en formato de texto, lo que significa que se pueden realizar 
# conversiones de formato (por ejemplo, de CRLF a LF en sistemas Unix).
ftp -A 192.168.1.10

nc -nvc 192.168.1.10 21

telnet 192.168.1.10 21
```

### **Interactuar con el cliente FTP**

```bash
ftp> anonymous # usuario
ftp> anonymous # contraseña
ftp> help # mostrar la ayuda
ftp> help CMD # mostrar la ayuda de un comando especifico
ftp> status # descripción general de la configuración del servidor
ftp> binary # establecer la transmisión en binario en lugar de ascii
ftp> ascii # establecer la transmisión a ascii en lugar de binario
ftp> ls -a # lista todos los archivos incluyendo los ocultos
ftp> cd DIR # cambia el directorio remoto
ftp> lcd DIR # cambia el directorio local
ftp> pwd # mostrar el directorio actual de trabajo
ftp> cdup  # mover al directorio anterior de trabajo
ftp> mkdir DIR # crea un directorio
ftp> get FILE [NEWNAME] # descarga un archivo con el nombre indicado NEWNAME
ftp> mget FILE1 FILE2 ... # descarga multiples archivos
ftp> put FILE [NEWNAME] # sube un fichero local a el servidor ftp con el nuevo nombre indicado NEWNANE
ftp> mput FILE1 FILE2 ... # sube multiples archivos
ftp> rename OLD NEW # renombra un archivo remoto
ftp> delete FILE # borra un fichero
ftp> mdelete FILE1 FILE2 ... # borra multiples archivos
ftp> mdelete *.txt # borra multiples archivos que cumplan con el patrón
ftp> exit # abandona la conexión ftp
```

### **Fuerza bruta de credenciales**

```bash
hydra -l elliot -P /usr/share/wordlists/rockyou.txt ftp://192.168.1.10
```

### **Arhivos de configuración**

* `/etc/ftpusers`
* `/etc/vsftpd.conf`
* `/etc/ftp.conf`
* `/etc/proftpd.conf`

### **Descargar archivos**

```bash
wget -m ftp://anonymous:anonymous@192.168.1.10
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://d4redevil.gitbook.io/d4redevil/servicios-comunes/ftp-21.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
