Mail Injection
Autor
Flitze
Klicks 13458
Bewertungen 7
Rating 4.6
Stand 24.03.2008
Keywords:
Mail Injection, E-Mails manipulieren, Kontaktformulare als Spammöglichkeit missbrauchen, \n\r, BCC: in Mails, mail()
Klicks 13458
Bewertungen 7
Rating 4.6
Stand 24.03.2008
Keywords:
Mail Injection, E-Mails manipulieren, Kontaktformulare als Spammöglichkeit missbrauchen, \n\r, BCC: in Mails, mail()
Breadcrumb:
Artikel » Mail Injection
Was ist Mail Injection?
[ADSENSE_LINE]Unter Mail Injection versteht man die Modifikation der Header-Angaben in einer E-Mail, die über ein Formular und die Funktion mail() verschickt wird. Diese Funktion versendet eine E-Mail in der z.B. folgende Header-Angaben stehen:
To: fiktiver.Name@fiktive.domain.de
Subject: Kontaktformular von fiktive.domain
From: Test@domain.de
Ich gehe mal von einem einfachen Kontaktformular aus, bei dem der User nur seine eigene E-Mail-Adresse eintragen muss, um eine Antwort erhalten zu können. Dabei sind To: und Subject: bereits vorgegeben, die From:-Angabe hängt jedoch von der Eingabe des Benutzers ab. Im obigen Beispiel wäre das Test@domain.de. Stattdessen könnte ein Angreifer aber auch folgende Adresse angeben:
Test@domain.de\nBcc: info@firma1.de, info@privat2.de, info@oeffentlich3.de
Dadurch werden die Header-Angaben manipuliert, so dass folgender Header entsteht:
To: fiktiver.Name@fiktive.domain.de
Subject: Kontaktformular von fiktive.domain
From: Test@domain.de
Bcc: info@firma1.de, info@privat2.de, info@oeffentlich3.de
Dadurch wird eine Kopie der Email an die nach Bcc: angegebenen Adressen versandt. Das kann zum Beispiel für Spam- und Werbemails ausgenutzt werden, die über meinen Server gesendet werden, so dass ich auch dafür haftbar gemacht werden kann.
Email-Adresse filtern
Bei der Registrierung neuer User habe ich damals einen RegExp zur Überprüfung der Email-Adresse geschrieben. Das Suchmuster lautet dabei
'§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§'
Dadurch werden nur Email-Adressen akzeptiert, die folgendermaßen aufgebaut sind:
Beliebig viele alphanumerische Zeichen, Punkte oder Gedankenstriche, gefolgt von einem @ gefolgt von beliebig vielen alphanumerischen Zeichen, Punkten oder Gedankenstrichen, gefolgt von einem Punkt gefolgt 2-4 alphanumerischen Zeichen. Eine gültige Adresse wäre somit z.B. user@domain.de.
Bezogen auf den obigen Mail-Injection-Versuch, würde es nun einen Fehler geben, da die oben genannte Adresse \n enthält, mehrere @’s besitzt und hinter Bcc ein Doppelpunkt steht.
So werden zwei Fliegen mit einer Klappe geschlagen, zum einen wird Mail Injection verhindert und zum anderen wird geprüft, ob die eingegeben Email Adresse auch gültig ist, damit z.B. Tippfehler berichtigt werden können.
Bewerten