# 21 - FTP/tcp

## Check List

* [ ] Comprobar si el usuario anonymous o ftp existen.
  * [ ] Si es así conectarnos y ver que nos deja ver.
  * [ ] Comprobar si nos deja subir archivos al ftp (READ/WRITE)
* [ ] Ejecutar algunos scripts de nmap de reconocimiento/enumeración.

<pre><code><strong>ftp &#x3C;IP> # conectarte al FTP
</strong><strong>ls, get, put, mget # comandos comunes
</strong><strong>anonymous:anonymous o anonymous: # probar credenciales por si el usuario anon esta habilitado
</strong><strong>ftp:ftp
</strong></code></pre>

Wordlist fuerza bruta: <https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt>

## Nmap scripts

<pre><code>nmap --script ftp-* -p 21 &#x3C;IP> # todos los scripts de reconocimiento
ls -al /usr/share/nmap/scripts/ | grep -e “ftp” # para ver los scripts posibles de ftp
<strong>## Opciones
</strong><strong>ftp-anon.nse
</strong>ftp-bounce.nse
ftp-brute.nse
ftp-libopie.nse
ftp-proftpd-backdoor.nse
ftp-syst.nse
ftp-vsftpd-backdoor.nse
ftp-vuln-cve2010–4221.nse
tftp-enum.nse
</code></pre>

### Descargar los archivos del FTP

```
wget -m ftp://anonymous:anonymous@<IP> #Download
wget -m --no-passive ftp://anonymous:anonymous@<IP> #Download
```

## Conectarse con telnet o ncat

```
nc <ip> 21
telnet <ip> 21
```

Una vez que hayas establecido la conexión, puedes interactuar con el servidor FTP utilizando comandos específicos del protocolo. Aquí te muestro algunos ejemplos

### Comandos básicos telnet - ncat

| Comando              | Descripción                                                                                                                                                             |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `USER username`      | Iniciar sesión en el servidor FTP proporcionando un nombre de usuario.                                                                                                  |
| `PASS password`      | Proporcionar la contraseña correspondiente al nombre de usuario proporcionado anteriormente.                                                                            |
| `LIST` o `NLST`      | Mostrar una lista de los archivos disponibles en el servidor, con información sobre su tamaño y fecha de modificación. `NLST` sólo muestra los nombres de los archivos. |
| `RETR file_name`     | Descargar el archivo correspondiente al nombre especificado desde el servidor FTP al cliente.                                                                           |
| `STOR file_name`     | Subir un archivo desde el cliente al servidor FTP con el nombre especificado.                                                                                           |
| `DELE file_name`     | Eliminar el archivo correspondiente al nombre especificado del servidor FTP.                                                                                            |
| `PWD`                | Mostrar el directorio actual en el servidor FTP.                                                                                                                        |
| `CWD directory_name` | Cambiar el directorio actual en el servidor FTP al directorio especificado.                                                                                             |
| `CDUP`               | Subir un nivel en la jerarquía de directorios en el servidor FTP.                                                                                                       |
| `MKD directory_name` | Crear un nuevo directorio en el servidor FTP con el nombre especificado.                                                                                                |
| `RMD directory_name` | Eliminar el directorio correspondiente al nombre especificado del servidor FTP.                                                                                         |
| `QUIT`               | Cerrar la sesión actual en el servidor FTP y terminar la conexión.                                                                                                      |

## Fuerza bruta

```
hydra -l <user> -P /usr/share/wordlists/rockyou.txt ftp
```


---

# 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://j4ckie0x17.gitbook.io/notes-pentesting/enumeracion-de-servicios/21-ftp-tcp.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.
