Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2020-7247-POC — Prova di concetto per CVE-2020-7247 a scopo educativo. | Kitploit
Strumenti/GitHubGitHub/simonschoeni/cve-2020-7247-poc
Analisi delle VulnerabilitàExploitPenetration TestingApprendimento e FormazioneSviluppo PayloadSicurezza Email
GitHubsimonschoeni/cve-2020-7247-poc

CVE-2020-7247-POC

Prova di concetto per CVE-2020-7247 a scopo educativo.

Vedi Repository
24 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
  • Premessa
  • Fatti chiave sullo sfruttamento
  • Installazione del server vulnerabile
    • Configurazione
    • Disclaimer sull'ambiente
  • Exploit
    • Sfruttamento manuale
    • Sfruttamento tramite script

Premessa

Questo repository dovrebbe servire come base per configurare e sfruttare CVE-2020-7247 in un ambiente controllato e privato. Tutto il codice e la configurazione pubblicati sono destinati esclusivamente al test di questa vulnerabilità e non per abusarne contro sistemi che non sono di tua proprietà o per i quali non hai il permesso di sfruttarli. Il proprietario di questo repository non è da ritenere responsabile per l'uso di questi strumenti da parte di terzi.

Fatti chiave sullo sfruttamento

Il problema principale nel codice è che la validazione della mail non funziona. Permette il passaggio di caratteri potenzialmente pericolosi nei campi MAIL FROM e RCPT TO.
Se la parte locale dell'indirizzo email non è valida, viene trattata come valida perché il codice aggiunge la parte del dominio e la interpreta come valida successivamente. Ciò permette all'attaccante di eseguire codice arbitrario.

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 }

Il codice dovrebbe apparire come segue per essere sicuro:

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 }

Opensmtpd procede quindi a eseguire un cosiddetto comando MDA. Il comando è utilizzato per la consegna della posta. Si presenta come segue:

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

Qui potresti già vedere il problema. mbox.from è l'indirizzo del mittente che è sotto completo controllo dell'attaccante.
L'attaccante è comunque limitato a utilizzare solo i caratteri nello shellcode che non sono nella seguente lista: !#$%&'*/?^{|}~+-=_!#$%&'*?{|}~
Completamente divulgato qui

Installazione del server vulnerabile

Si è liberi di scegliere la distribuzione su cui eseguire il server. L'ho testato su Ubuntu 18.04 LTS.
Esegui chmod +x setup.sh per rendere eseguibile lo script di configurazione. Puoi usarlo con un utente normale poiché ho incluso solo i diritti sudo nello script dove necessario. (Ovviamente il tuo utente deve essere un sudoer)
Lo script di configurazione installerà tutte le dipendenze richieste per smtpd stesso e copierà la configurazione nelle rispettive posizioni.
Verrà installato Opensmtpd 6.6.1.
Se hai bisogno di eseguire openstmpd manualmente o lo script ha qualche errore, esegui il seguente comando:

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

Configurazione

Le configurazioni in questo repository sono solo per test locali. Non includono domini esterni/configurazioni avanzate.
aliases e smtpd.conf sono i due file di configurazione necessari per la configurazione di questo server. Sei libero di modificarli come desideri. Tieni presente che la configurazione era pensata per il mio server di test. Il mio nome server era ase (direttiva @ase in smtpd.conf) e il mio nome utente era ase (configurazione utente in aliases).
Dovrai sostituire <YOUR IP> in smtpd.conf con l'IP del tuo server. Altrimenti smtpd non si avvierà.

Disclaimer sull'ambiente

Nel caso in cui ti imbatti in indirizzi IP e porte in questo ambiente, ecco alcuni fatti chiave sull'ambiente che ho utilizzato in modo che tu possa modificarli di conseguenza:

  • Nome server: ase
  • Nome utente: ase
  • IP del server SMTPD: 192.168.1.40
  • Porta SMTPD: 25
  • IP dell'attaccante: 192.168.1.31
  • Porta per reverse shell: 1337

Exploit

L'exploit fornito usa Python 3.x. Utilizza la dipendenza pwn. Per utilizzare questo exploit è necessario installare pwntools usando pip3 install pwntools.
Fondamentalmente l'exploit sfrutta automaticamente la vulnerabilità senza richiedere interazione da parte dell'utente. Tuttavia l'exploit può essere eseguito manualmente senza lo script Python.

Sfruttamento manuale

Come menzionato in precedenza, l'exploit può essere eseguito senza lo script Python fornito. Dovrai seguire manualmente il processo SMTP. Questo può essere fatto usando netcat o telnet.
Ecco un esempio di come può essere fatto 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

Sfruttamento tramite script

Puoi anche usare lo script fornito. I seguenti parametri sono possibili:

  • --targetHost specifica il target ed è obbligatorio.
  • --targetPort specifica la porta target ed è obbligatorio.
  • --customCommand specifica il comando da iniettare.

shellcode.py serve come esempio di come potrebbe essere un codice di shell remoto. \

Demo dell'exploit

Scarica lo strumento