FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Webmail-Formulare und Abmahnungen

Webmail-Formulare und Abmahnungen 2006-03-14 15:35
Popcorn
Verdammte Axt. Das Problem mit Formularen im Netz, über die man Nachrichten versenden kann ist mir eigentlich wohl bekannt. Im Betreff wird etwa einfach ein "/n/nTo: noch.eine@email.de …" angesetzt und schon kann man anonymen Spam verteilen. Nun habe ich doch eine Abmahnung erhalten.

Beim nochmaligen betrachten des Skriptes habe ich mir dann auch gegen die Stirn geklatscht. Das @ habe ich brav gefiltert, nur nicht den hexadezimalen ASCII-Code dazu. [8] Tri hat mir eben noch mal aus seinem Perl-Buch einen schicken regulären Ausdruck rausgesucht, der alles umwandelt. Da hier ja einige Experten unterwegs sind, wäre ich sehr dankbar, wenn jemand einen Blick drauf werfen könnte, ob er noch etwas sieht.

Ich habe jetzt auf jeden Fall erst mal nach dem Motto mehr ist mehr ein paar Dinge geparst und geändert:

#!/usr/bin/perl BEGIN { $| = 1; open (STDERR, ">&STDOUT"); print qq~Content-type: text/html\n\n~; } $mailprog = '/usr/sbin/sendmail'; $admin_email = "mail\@to-me.de"; use CGI; use LWP::Simple; $query = new CGI; $email = $query->param('email'); $name = $query->param('name'); $betreff = $query->param('betreff'); $mailtext = $query->param('mailtext'); my $pass = "ok"; $message = "<table class='main'><tr><td>"; $betreff =~ s/\%(..)/pack("c",hex($1))/ge; $mailtext =~ s/\%(..)/pack("c",hex($1))/ge; $name =~ s/\%(..)/pack("c",hex($1))/ge; $betreff =~ s/\:/\.\./g; $mailtext =~ s/\:/\.\./g; $name =~ s/\:/\.\./g; $betreff =~ s/\\//g; $name =~ s/\\/\//g; $betreff =~ s/\@/\(at\)/g; $mailtext =~ s/\@/\(at\)/g; $name =~ s/\@/\(at\)/g; if($email !~ /^[\w.+-]{1,64}\@[\w.-]{1,255}\.[a-z]{2,6}$/ || length($betreff) > 80) || length($name) > 80) || length($email) > 80) { $message.= '<span class='headline'>Fehler!</span><br /> Bla...'; } else { $message .= '<span class='headline'>Nachricht gesendet!</span> bla...'; } $message .= "</td></tr></table>"; if($pass eq "ok") { &mailadd; } exit; sub mailadd { open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n"; print MAIL "From: $email\n"; print MAIL "To: $admin_email\n"; print MAIL "Subject: $betreff\n\n"; print MAIL "Text\n\n"; print MAIL "$mailtext"; print MAIL "\n\n"; print MAIL "-------------\n"; print MAIL "Versender gab den Namen - $name - an."; print MAIL "\n\n"; close (MAIL); open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n"; print MAIL "From: $admin_email\n"; print MAIL "To: $email\n"; print MAIL "Subject: Ihre Nachricht ist bei uns eingegangen\n\n"; print MAIL "Ihre Nachricht mit dem Betreff '$betreff' ist soeben bei uns eingegangen."; print MAIL "\n\n"; print MAIL "Signatur\n"; print MAIL "Signatur"; print MAIL "\n\n"; close (MAIL); }

Re: Webmail-Formulare und Abmahnungen 2006-03-14 16:56
Anonymer User
1. Emailadressen sind weit weg von trivial. Man kann da viel Scheiss bauen, mitunter auch indem man auf Bangpaths zurückgreift oder so. Zum Parsen empfehle ich, eine Bibliothek zu verwenden, die den entsprechenen RFC implementiert.

2. Wenn Du nicht -t benutzt, um sendmail den Adressaten mitzuteilen, sondern die Adresse direkt beim Aufruf übergibst, dann ist Dein beschriebener Spam-Exploit nicht möglich. Dafür mußt Du aber ein wenig vorsichtig sein, damit niemand rm -rf / als Adressaten übergibt.

LEIFer

Re: Webmail-Formulare und Abmahnungen 2006-03-14 17:14
Popcorn
Das klingt jetzt noch etwas nach Bahnhof für mich, aber darüber werde ich mich mal schlau machen. RFC für die Implementierung von Webmail-Formularen? Cool. Hast du zufällig gerade noch die Nummer auf Tasch?

Re: Webmail-Formulare und Abmahnungen 2006-03-14 17:18
Faleiro
-v

Wer verschickt denn da Abmahnungen?!

Re: Webmail-Formulare und Abmahnungen 2006-03-14 18:01
Popcorn
Der Provider.

Re: Webmail-Formulare und Abmahnungen 2006-03-14 18:06
Anonymer User
Ich meinte die RFCs, in denen das Format von Emailadressen festgehalten ist.

LEIFer

Re: Webmail-Formulare und Abmahnungen 2006-03-14 18:12
BoTaS
Gibt's in Perl denn keine Funktion für den Mailversand sodass man das nicht so "per Hand" machen muss?

Re: Webmail-Formulare und Abmahnungen 2006-03-14 19:59
leif
Eine eingebaute Funktion sicher nicht. Als Modul gibt es das sicherlich. Und, ja, auch damit wird man bestimmt besser gegen solche Exploits gewappnet sein.

Re: Webmail-Formulare und Abmahnungen 2006-03-14 21:15
Popcorn
Aber in der von mir verwendeten Variante sieht niemand selbst eine Lücke?

Nach so einem Modul wollte ich zum Vergleich auch noch mal Ausschau halten.