* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
O **Protocolo de Transferência de Arquivos (FTP)** é um protocolo de rede padrão usado para a transferência de arquivos de computador entre um cliente e um servidor em uma rede de computadores.\
É um protocolo de **texto simples** que usa como **caractere de nova linha `0x0d 0x0a`**, então às vezes você precisa **conectar usando `telnet`** ou **`nc -C`**.
No **FTP Ativo**, o **cliente FTP** primeiro **inicia** a **conexão de controle** a partir da sua porta N para a porta de comando do servidor FTP - porta 21. O **cliente** então **escuta** na porta **N+1** e envia a porta N+1 para o servidor FTP. O servidor FTP então **inicia** a **conexão de dados**, da sua porta M para a porta N+1 do cliente FTP.
No entanto, se o cliente FTP tiver um firewall configurado que controle as conexões de dados recebidas de fora, o FTP ativo pode ser um problema. E uma solução viável para isso é o FTP passivo.
No **FTP Passivo**, o cliente inicia a conexão de controle a partir da sua porta N para a porta 21 do servidor FTP. Após isso, o cliente emite um comando **passv**. O servidor então envia ao cliente um de seus números de porta M. E o **cliente****inicia** a **conexão de dados** da sua porta P para a porta M do servidor FTP.
O protocolo FTP (File Transfer Protocol) é amplamente utilizado para transferir arquivos entre um cliente e um servidor. No entanto, o FTP não é um protocolo seguro, pois as informações são transmitidas em texto simples, o que pode permitir que um invasor intercepte e leia os dados.
Para aumentar a segurança da conexão FTP, é possível usar o STARTTLS (Transport Layer Security) para criptografar a comunicação. O STARTTLS é um comando que permite que o cliente e o servidor negociem uma conexão segura antes de iniciar a transferência de dados.
Lembre-se de que nem todos os servidores FTP suportam o STARTTLS. Portanto, verifique se o servidor que você está tentando acessar oferece suporte a essa funcionalidade antes de tentar estabelecer uma conexão segura.
Aqui você pode encontrar uma lista completa com as credenciais padrão do ftp: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
Observe que se um **aplicativo da web** estiver enviando dados controlados por um usuário **diretamente para um servidor FTP**, você pode enviar bytes de codificação de URL dupla `%0d%0a` (na codificação de URL dupla, isso é `%250d%250a`) e fazer com que o **servidor FTP execute ações arbitrárias**. Uma dessas possíveis ações arbitrárias é baixar conteúdo de um servidor controlado pelo usuário, realizar varreduras de porta ou tentar se comunicar com outros serviços baseados em texto simples (como http).
* **`PORT 127,0,0,1,0,80`** Isso indicará ao servidor FTP para estabelecer uma conexão com o IP 127.0.0.1 na porta 80 (_você precisa colocar o 5º caractere como "0" e o 6º como a porta em decimal ou usar o 5º e 6º para expressar a porta em hexadecimal_).
* **`EPRT |2|127.0.0.1|80|`** Isso indicará ao servidor FTP para estabelecer uma conexão TCP (_indicada por "2"_) com o IP 127.0.0.1 na porta 80. Este comando **suporta IPv6**.
* **`LIST`** Isso enviará a lista de arquivos na pasta atual
* **`LIST -R`** Listar recursivamente (se permitido pelo servidor)
* **`APPE /caminho/alguma_coisa.txt`** Isso indicará ao FTP para armazenar os dados recebidos de uma conexão **passiva** ou de uma conexão **PORT/EPRT** em um arquivo. Se o nome do arquivo existir, ele anexará os dados.
* **`STOR /caminho/alguma_coisa.txt`** Semelhante ao `APPE`, mas ele substituirá os arquivos
* **`STOU /caminho/alguma_coisa.txt`** Semelhante ao `APPE`, mas se o arquivo existir, não fará nada.
* **`RETR /caminho/para/arquivo`** Deve ser estabelecida uma conexão passiva ou de porta. Em seguida, o servidor FTP enviará o arquivo indicado por essa conexão
* **`REST 6`** Isso indicará ao servidor que na próxima vez que ele enviar algo usando `RETR`, ele deve começar no 6º byte.
Alguns servidores FTP permitem o comando PORT. Esse comando pode ser usado para indicar ao servidor que você deseja se conectar a outro servidor FTP em alguma porta. Em seguida, você pode usar isso para verificar quais portas de um host estão abertas por meio de um servidor FTP.
Você também pode abusar desse comportamento para fazer com que um servidor FTP interaja com outros protocolos. Você pode **fazer upload de um arquivo contendo uma solicitação HTTP** e fazer com que o servidor FTP vulnerável **a envie para um servidor HTTP arbitrário** (_talvez para adicionar um novo usuário administrador?_) ou até mesmo fazer upload de uma solicitação FTP e fazer com que o servidor FTP vulnerável faça o download de um arquivo para um servidor FTP diferente.\
1.**Faça upload da solicitação (dentro de um arquivo de texto) para o servidor vulnerável.** Lembre-se de que, se você quiser conversar com outro servidor HTTP ou FTP, precisará alterar as linhas com `0x0d 0x0a`
2.**Use `REST X` para evitar enviar os caracteres que você não deseja enviar** (talvez para fazer upload da solicitação dentro do arquivo, você precise colocar algum cabeçalho de imagem no início)
É altamente provável que isso **gere um erro como**_**Socket not writable**_**porque a conexão não dura o suficiente para enviar os dados com `RETR`**. Sugestões para tentar evitar isso são:
* Tente **preencher a solicitação com dados "lixo" relativos ao protocolo** (falando com FTP, talvez apenas comandos lixo ou repetindo a instrução `RETR` para obter o arquivo)
De qualquer forma, aqui está um [exemplo antigo de como abusar disso para fazer um servidor FTP fazer o download de um arquivo de um servidor FTP diferente.](ftp-bounce-download-2oftp-file.md)
O **FileZilla** geralmente **vincula** a um **serviço administrativo****local** para o **FileZilla-Server** (porta 14147). Se você puder criar um **túnel** da **sua máquina** para acessar esta porta, você pode **conectar-se** a **ele** usando uma **senha em branco** e **criar** um **novo usuário** para o serviço FTP.
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, realiza varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm_source=referral&utm_campaign=hacktricks) hoje.
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.