Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2015-3306-lab — Laboratório Docker reproduzível + exploit de raw-socket para CVE-2015-3306 (cópia arbitrária de arquivos pré-autenticação no mod_copy do ProFTPD) — um exercício de aprendizado de patch-diffing | Kitploit
Ferramentas/GitHubGitHub/diegslva/cve-2015-3306-lab
Frameworks de ExploraçãoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubdiegslva/cve-2015-3306-lab

cve-2015-3306-lab

Laboratório Docker reproduzível + exploit de raw-socket para CVE-2015-3306 (cópia arbitrária de arquivos pré-autenticação no mod_copy do ProFTPD) — um exercício de aprendizado de patch-diffing

Ver Repositório
há 8h 48mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2015-3306 — ProFTPD mod_copy Cópia Arbitrária de Arquivos Pré-Autenticação

Um laboratório totalmente reproduzível e um exploit escrito à mão para a CVE-2015-3306 — construído como exercício de aprendizado em pesquisa de vulnerabilidades: análise de patches, disparo manual e desenvolvimento de exploits via socket bruto.

A vulnerabilidade

O módulo mod_copy do ProFTPD implementa o par de comandos SITE CPFR / SITE CPTO, que copia arquivos no lado do servidor sem transferir dados para o cliente.

Na versão 1.3.5, nenhum dos handlers verificava se a sessão estava autenticada. O módulo simplesmente assumia "ninguém enviará comandos SITE antes de fazer login" — uma suposição equivocada que virou uma CVE. Qualquer cliente não autenticado podia copiar qualquer arquivo legível pelo processo do servidor para qualquer local gravável por ele.

O patch

A correção (commit 212d54271f, lançado na 1.3.5a) faz duas coisas:

  1. Adiciona uma barreira de autenticação no topo de e :
copy_cpfr
copy_cpto
root@kitploit:~
authenticated = get_param_ptr(cmd->server->conf, "authenticated", FALSE);
if (authenticated == NULL || *authenticated == FALSE) {
  pr_response_add_err(R_530, _("Please login with USER and PASS"));
  errno = EPERM;
  return PR_ERROR(cmd);
}
  • Adiciona a diretiva CopyEngine on|off — anteriormente o módulo nem podia ser desabilitado em builds que o incluíam.
  • O diff unificado completo está em patch.diff. Ler patches é a habilidade: a correção mostra onde estava a ferida.

    O laboratório

    O Dockerfile compila o ProFTPD 1.3.5 (a última versão vulnerável) a partir do tarball oficial da fonte com mod_copy habilitado:

    root@kitploit:~
    docker build -t proftpd-135 .
    docker run -d --name lab135 -p 127.0.0.1:2121:21 -p 127.0.0.1:30000-30010:30000-30010 proftpd-135
    docker exec lab135 chmod 777 /home/ftp
    

    PassivePorts em proftpd.conf fixa o canal de dados — a arquitetura de dois canais do FTP (controle + dados dinâmicos) é o motivo pelo qual mapeamentos ingênuos de containers falham: a porta de controle funciona, a de dados não.

    O exploit

    exploit.py usa sockets brutos — sem ftplib, porque bibliotecas escondem o protocolo, e esconder o protocolo é exatamente o que estamos combatendo:

    root@kitploit:~
    SITE CPFR /etc/segredo.txt   -> 350  (nenhum USER/PASS enviado: este É o bug)
    SITE CPTO /home/ftp/...      -> 250  (cópia arbitrária executada)
    USER ftp / PASS ...          -> 230  (o login é apenas o caminho de exfiltração)
    PASV / RETR                  -> 150 -> 226  (flag capturada)
    DELE                         -> 250  (limpeza: nenhum IOC deixado para trás)
    

    Lições aprendidas (o verdadeiro objetivo deste repositório)

    • Banner != verdade. O Debian aplica backports de correções sem alterar versões; honeypots (Dionaea e outros) imitam deliberadamente banners vulneráveis.
    • Bug explorável != exploit automático. O ambiente (permissões do sistema de arquivos, AllowOverwrite, mapeamentos de porta) decide o impacto final.
    • Idempotência importa. Um bom exploit roda duas vezes seguidas — nomes de destino únicos (time.time_ns(), não time.time()), e nenhuma dependência de estado residual.
    • Respostas FTP têm uma máquina de estados. 1xx é preliminar (espere mais), 2xx completo, 3xx intermediário, 5xx erro. RETR responde duas vezes: 150, depois 226. Esgote ambas antes do próximo comando.
    • Os logs do alvo são a verdade absoluta. Quando o cliente diz "550" e você não sabe o porquê, o log de depuração do servidor (-d10) mostra exatamente qual verificação foi acionada.
    • Limpeza é OPSEC. Um exploit que deixa arquivos para trás é um exploit que deixa evidências para trás.

    Referências

    • Commit da correção: https://github.com/proftpd/proftpd/commit/212d54271f
    • CVE: https://nvd.nist.gov/vuln/detail/CVE-2015-3306

    Aviso legal

    Apenas para fins educacionais e uso em laboratório autorizado. Executar isso contra sistemas que você não possui ou sem permissão por escrito para testar é ilegal.

    Baixar ferramenta