hacktricks/pentesting-web/email-injections.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

10 KiB

Inyecciones de correo electrónico


Utilice Trickest para construir y automatizar flujos de trabajo con las herramientas de la comunidad más avanzadas del mundo.
Obtenga acceso hoy mismo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Inyectar en correo electrónico enviado

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

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

El mensaje será enviado tanto al destinatario original como a la cuenta del atacante.

Inyectar argumento de Asunto

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

El asunto falso se agregará al asunto original y en algunos casos lo reemplazará. Depende del comportamiento del servicio de correo.

Cambiar el cuerpo del mensaje

Inyecte dos saltos de línea y luego escriba su mensaje para cambiar el cuerpo del mensaje.

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

Explotación de la función mail() de PHP

# 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 ]
  }
}

El quinto parámetro ($additional_parameters)

Esta sección se basará en cómo abusar de este parámetro suponiendo que un atacante lo controle.

Este parámetro se agregará a la línea de comando que PHP usará para invocar el binario sendmail. Sin embargo, se sanitizará con la función escapeshellcmd($additional_parameters).

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 MTA de correo electrónico (Sendmail, Postfix, Exim, etc.) instalado en el sistema. Aunque la funcionalidad básica (como los parámetros -t -i -f) sigue siendo la misma por razones de compatibilidad, otras funciones y parámetros varían mucho según el MTA instalado.

Aquí hay algunos ejemplos de diferentes páginas de manual de la interfaz de comando sendmail:

Dependiendo del origen del binario sendmail, se han descubierto diferentes opciones para abusar de ellos y filtrar archivos o incluso ejecutar comandos arbitrarios. Ver cómo en https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

Inyectar en el nombre del correo electrónico

Partes ignoradas de un correo electrónico

Los símbolos: +, - y {} en raras ocasiones se pueden usar para etiquetar y ser ignorados por la mayoría de los servidores de correo electrónico.

Los comentarios entre paréntesis () al principio o al final también se ignorarán.

Bypass de lista blanca

Comillas

IPs

También puede usar IPs como nombres de dominio entre corchetes:

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

Otras vulnerabilidades

SSO de terceros

XSS

Algunos servicios como github o salesforce permiten crear una dirección de correo electrónico con payloads XSS. Si puede usar estos proveedores para iniciar sesión en otros servicios y estos servicios no están sanitizando correctamente el correo electrónico, podría causar XSS.

Toma de cuenta

Si un servicio SSO le permite crear una cuenta sin verificar la dirección de correo electrónico proporcionada (como salesforce) y luego puede usar esa cuenta para iniciar sesión en un servicio diferente que confía en salesforce, podría acceder a cualquier cuenta.
Tenga en cuenta que salesforce indica si se verificó o no el correo electrónico proporcionado, pero la aplicación también debería tener en cuenta esta información.

Responder a

Puede enviar un correo electrónico usando De: empresa.com** ** y Responder a: atacante.com y si se envía alguna respuesta automática debido a que el correo electrónico se envió desde una dirección interna, el atacante podría ser capaz de recibir esa respuesta.

Tasa de rebote duro

Algunas aplicaciones como AWS tienen una Tasa de rebote duro (en AWS es del 10%), que cuando está sobrecargado, el servicio de correo electrónico se bloquea.

Un rebote duro es un correo electrónico que no se pudo entregar por algunas razones permanentes. Tal vez la dirección de correo electrónico es falsa, tal vez el dominio de correo electrónico no es un dominio real, o tal vez el servidor del destinatario de correo electrónico no aceptará correos electrónicos, lo que significa que de un total de 1000 correos electrónicos, si 100 de ellos eran falsos o eran inválidos que causaron que todos rebotaran, AWS SES bloqueará su servicio.

Por lo tanto, si puede enviar correos electrónicos (tal vez invitaciones) desde la aplicación web a cualquier dirección de correo electrónico, podría provocar este bloqueo enviando cientos de invitaciones a usuarios y dominios inexistentes: DoS del servicio de correo electrónico.

Referencias

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥


Use Trickest para crear y automatizar flujos de trabajo con las herramientas de la comunidad más avanzadas del mundo.
Obtenga acceso hoy:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}