In der letzten Woche gab es verstärkt Angriffe gegen Formmail-Skripte. Die erste Welle gegen einen meiner Server nutze einen Fehler in einem Perl Skript eines Kunden aus. Die zweite Welle wurde erstaunlicherweise gegen PHP-Skripte gefahren, die nach bisherigen Erkenntnissen eigentlich nicht angreifbar waren. Eine Analyse des Angriffs offenbarte eine Schwäche in der PHP mail()
Funktion, die sich ausnutzen läßt, wenn man dem Parameter additional_headers
ungeprüftes Userinput übergibt. Es ist dann möglich den Mail-Header enden zu lassen und einen eigenen Text in den Body (und auch zusätzliche Cc und Bcc Empfänger) einzufügen. Die Attacke ist unter dem Link mail_with_checks Funktion
näher beschrieben. Desweiteren gibt es dort auch eine Abhilfe.
- Gehightlighteter PHP-Quelltext: mail_with_checks Funktion
- Download: mail_with_checks Funktion
- Weitere Hinweise auf großflächigere Angriffe gegen diese Schwäche fanden sich in den User-Kommentaren zur PHP mail() Funktion (Suche nach
command injection)