PHP Magazin - SMTP Header Injection

Das Archiv enthält außer dieser Datei die Skripte index.php mit der Startseite, kontakt*.php mit dem Kontaktformular und empfehle*.php mit der Empfehlungsfunktion.

Die praktischen Beispiele

Da mail() einen vorhandenen und funktionierenden Mail Transfer Agent wie z.B. sendmail erfordert, gibt es diesmal kein VMware-Image mit dem Skript. Der individuelle Anpassungsaufwand wäre zu groß, und eine allgemeine Installation würde in den meisten Fällen keine E-Mails los werden, da die meisten Mailserver keine E-Mails von Dialup-IP-Adressen, wie Sie die meisten von Ihnen vermutlich verwenden, akzeptieren.

Senden von E-Mails

Wenn Sie die Angriffe mit echten E-Mails nachvollziehen möchten, müssen Sie die Skripte auf einem eigenen Server mit installierten MTA installieren. Sofern der Befehl mail() funktioniert, funktionieren auch das Skripte. Ob die Angriffe möglich sind, steht auf einem anderen Blatt: Ist Suhosin installiert und über die Direktive suhosin.mail.protect die Schutzfunktion für den mail()-Befehl aktiviert, ist keine Header-Injection möglich und die Angriffe laufen auch in den unsicheren Skripten ins Leere.

Bevor Sie die Skripte verwenden können, müssen Sie die E-Mail-Adresse für den Empfänger in den Skripten kontakt.php, kontakt-filter.php und kontakt-test.php auf eine Ihrer E-Mail-Adressen ändern.

Das zumindest auf die unsicheren Skripte kein Unbefugter Zugriff haben darf, dürfte sich von selbst verstehen.

Eine Alternative

Um die Angriffe und Lösungen auch ohne funktionierenden MTA nachvollziehen zu können, besteht die Möglichkeit, den Mailversand zu simulieren. Dabei werden die eingegebenen Daten in eine Datei geschrieben, die anschließend im Skript angezeigt wird. Im unsicheren Skript sehen Sie dann die eingeschleusten zusätzlichen Zeilen, im sicheren Skript das, was vom Angriff übrig bleibt.

Hilfreiche Startseite

Auf der Startseite können Sie zwei E-Mail-Adressen eingeben, für die das Skript dann die passenden Eingaben für die Angriffe erzeugt. Ohne eingegebene Adressen sehen Sie den Aufbau der notwendigen Eingabe.