Formmailer Sicher oder Nicht - Fortsetzung
PERLentaucher
- perl
0 PERLentaucher0 Reiner0 PERLentaucher0 Vinzenz0 Reiner0 PERLentaucher0 Reiner
0 P.Gerster
Hallo beisammen:
folgend ein Perl-Skript für einen Form-Mailer, das ich aus dem Archiv gezogen habe:
#!/usr/bin/perl
my $Sendmail_Prog = "/usr/sbin/sendmail";
use CGI;
use strict;
my $query = new CGI;
my @names = $query->param;
my $delimiter = ':'
my $mailto = 'Email-Addy';
my $returnhtml = $query->param('return');
my $subject = 'Irgendwas';
my $mailtext = "";
my $name;
my @values;
my $value;
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
foreach $value (@values) {
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$delimiter;
$mailtext = $mailtext.$value."\n";
}
}
}
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);
print "Location: $returnhtml\n\n";
Laut Kommentaren sollte das wohl relativ sicher sein. Nun die Frage, was muss ich noch tun, damit der Mailer komplett ist?? Ich muss doch noch irgendwo die tatsächliche Mail-Adresse speichern, oder? Und das doch wohl nicht in der selben Datei??!?!
Außerdem stand da noch folgendes::
Zitat:
Einziger "Angriffspunkt", der aber nicht wirklich einer ist:
my $returnhtml = $query->param('return');
Ein "Fremdnutzer" kann nach dem Senden der Mail an DICH auf eine andere Seite weiterleiten. Wenn Du da flexibel sein willst, gib einfach einen String mit und nimm den im Script als Key in ein fest codiertes Hash:
my %return = (ret1 => "danke1.html", ret2 => "danke2.html")
print "Location: $return{$returnhtml}\n\n";
Zitat Ende.
wie habe ich das einzubauen, und ist das wirklich wichtig?
Vielen Dank
PERLentaucher
also gut, vielleicht ist das zu viel Text fürs erste, also noch mal in Kürze:
wird nicht meine eMail-Adresse trotzdem von robots ausgelesen, wenn sie in der pl steht (auch wenn fest verankert)?
scheinbar muss ich noch was verändern, weil einfach mit
<html><head></head><body>
<form action="http://www.seite.de/cgi-bin/mailer.pl" method="post">
<input type="hidden" name="return" value="http://www.seite.de/danke.html">
<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Feedback-Formular">
<input type="Text" name="name" value="" size="50" maxlength="50">
<input type="Text" name="mailtext" value="" size="50" maxlength="50">
<input type="submit"><input type="reset">
</form>
</body></html>
klappt es noch nicht.
dankbar für Tipps:
PERLentaucher
also gut, vielleicht ist das zu viel Text fürs erste, also noch mal in Kürze:
- wird nicht meine eMail-Adresse trotzdem von robots ausgelesen, wenn sie in der pl steht (auch wenn fest verankert)?
Nee, da kommt der doch gar nicht dran!
Gruß
Reiner
Nee, da kommt der doch gar nicht dran!
wieso nicht? die pl ist doch eindeutig ausgewiesen, und über den umweg der pl lässt sich doch die bla@blabla.de finden ?! oder wäre das eher ein Tipp für zukünftige Robot-creators ??
Hallo PERLentaucher,
Nee, da kommt der doch gar nicht dran!
wieso nicht? die pl ist doch eindeutig ausgewiesen, und über den umweg der pl lässt sich doch die bla@blabla.de finden ?! oder wäre das eher ein Tipp für zukünftige Robot-creators ??
Auch ein Robot, ein Spider oder sonstwas erhält auf seine Anfrage das, was auch der Browser erhält: die Ausgabe, die der Server zurückliefert, aber nicht den Quelltext des Perlscripts.
Wenn der Quelltext zurückgeliefert wird, dann ist der Server fatal fehlkonfiguriert.
In der Ausgabe erscheint jedoch keine Mail-Adresse.
Freundliche Grüsse,
Vinzenz
klingt einleuchtend.
Vielen Dank
Weiterhin offen: Was klappt an meinem skript nicht??
thanx again...
»» »» Nee, da kommt der doch gar nicht dran!
[...]oder wäre das eher ein Tipp für zukünftige Robot-creators ??
Ja, unsere Kiste http://www.w3sitesearch.com ist schon heiß drauf. ;-)
Im Ernst: Wie Vinzenz schon richtig sagte, kann man den Quelltext nicht sehen. Nur das, was Du auch im Browser siehst.
Vorsicht: Wenn Dein Webserver falsch konfiguriert ist bzw. Du auf einem Unixsystem die Rechte nicht auf "ausführbar" stellst, kann ich den Quelltext schon sehen.
Gruß
Reiner
Vorsicht: Wenn Dein Webserver falsch konfiguriert ist bzw. Du auf einem Unixsystem die Rechte nicht auf "ausführbar" stellst, kann ich den Quelltext schon sehen.
also 755, richtig?
Vorsicht: Wenn Dein Webserver falsch konfiguriert ist bzw. Du auf einem Unixsystem die Rechte nicht auf "ausführbar" stellst, kann ich den Quelltext schon sehen.
also 755, richtig?
Genau!
Besitzer|Gruppe|others
rwx|r-x|r-x
7|5|5
Nur zur Veranschaulichung.
Gruß
Reiner
warum klappt denn dieses Skript nu so nicht? würde mich auch interessieren.
Hallo Taucher,
warum klappt denn dieses Skript nu so nicht? würde mich auch interessieren.
Was heißt: klappt nicht?
Welche Fehlermeldungen gibt es? Was steht im Log?
Oder fangen wir ganz vorn an:
Serverkonfiguration:
- Betriebssystem (mit Versionsangabe)
- verwendeter Webserver (mit Version)
- Perl (Version, Pfad zu Perl)
- Mailserver (Version, Pfad zum Sendmail-Wrapper, falls vorhanden)
Ich vermute: Eine Linux- oder BSD-Variante mit apache, aber meine Glaskugel ist derzeit ziemlich schmutzig und daher noch unzuverlässiger als sonst :-)
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
warum klappt denn dieses Skript nu so nicht? würde mich auch interessieren.
[...]
Ich vermute: Eine Linux- oder BSD-Variante mit apache, aber meine Glaskugel ist derzeit ziemlich schmutzig und daher noch unzuverlässiger als sonst :-)
lies nochmal die Frage, und dann auch den Namen des Menschen!
Er (NICHT der Taucher) fragt sich, was an dem Script vom Taucher NICHT klappt.
Die Antwort weiß ich auch nicht, aber vermute, daß das gar nicht das Problem ist.
Der Taucher will eher mögliche Sicherheitslücken finden.
Gruß
Reiner
ist schon okay... ich weiß auch nicht, warum das so nicht klappt ;-) aber gut aufgepasst :-D Das mit den Sicherheitslücken wurde mitlerweile beantwortet.
taucher
ist schon okay... ich weiß auch nicht, warum das so nicht klappt ;-) aber gut aufgepasst :-D Das mit den Sicherheitslücken wurde mitlerweile beantwortet.
laß den kram mal auf der konsole laufen!
wenn ein 500er Fehler kommt (im Browser), entdeckst Du den hier leichter!
linux> perl programmname.pl
laß den kram mal auf der konsole laufen!
wenn ein 500er Fehler kommt (im Browser), entdeckst Du den hier leichter!linux> perl programmname.pl
ist leider nicht mein Server, sondern der des Providers. kann man da auch was über konsole machen??
laß den kram mal auf der konsole laufen!
wenn ein 500er Fehler kommt (im Browser), entdeckst Du den hier leichter!linux> perl programmname.pl
ist leider nicht mein Server, sondern der des Providers. kann man da auch was über konsole machen??
ja, wenn Du per ssh drankommst.
ansonsten mach mal das rein:
use CGI::Carp "fatalsToBrowser";
also:
Software error:
syntax error at /www/.../.../cgi-bin/mailer.pl line 17, near "my "
Global symbol "$mailto" requires explicit package name at /www/.../.../cgi-bin/mailer.pl line 17.
Global symbol "$mailto" requires explicit package name at /www/.../.../cgi-bin/mailer.pl line 43.
Execution of /www/.../.../cgi-bin/mailer.pl aborted due to compilation errors.
werd auch gleich mal abgleichen, was das heißen könnte....
Zeile 17:
my $mailto = 'bla@domain.de';
Zeile 43:
print MAIL "To: $mailto\n";
also schlau werd ich da draus irgendwie nicht...
wie sieht's mit Euch aus?
Hallo PERLentaucher,
also schlau werd ich da draus irgendwie nicht...
15: # -------> interne Daten aus den erwarteten hidden-Feldern auslesen:
16: my $delimiter = ':' # Da fehlt was!
17: my $mailto = 'Email-Addy';
wie sieht's mit Euch aus?
Ich hab' in Zeile 16 geschaut und bin fündig geworden ;-)
Freundliche Grüsse,
Vinzenz
Ich fasse es nicht.... so ein winziger F**CKing semikolon....
Vielen Dank für Eure Mühen..
PERLentaucher.
guud's nächdle..
Hallo Reiner,
Ich vermute: Eine Linux- oder BSD-Variante mit apache, aber meine Glaskugel ist derzeit ziemlich schmutzig und daher noch unzuverlässiger als sonst :-)
lies nochmal die Frage, und dann auch den Namen des Menschen!
Ich schreibe es ja, meine Glaskugel ist sehr unzuverlässig. Sie hat mir gesagt, dass es sich bei den Autoren der Beiträge https://forum.selfhtml.org/?t=101713&m=624952 und https://forum.selfhtml.org/?t=101713&m=624941 um ein- und dieselbe Person handelt. Es war natürlich völlig überflüssig, sie zu konsultieren, da P.Gerster das Wörtchen "auch" verwendete. Aber so was passiert.
Der Taucher will eher mögliche Sicherheitslücken finden.
Nicht nur, siehe https://forum.selfhtml.org/?t=101713&m=624941.
Freundliche Grüsse,
Vinzenz
Welche Fehlermeldungen gibt es?
internal server error 500 blabla ...
im log muss ich grad mal nachsehen.. werde es nachreichen.
Oder fangen wir ganz vorn an:
Serverkonfiguration:
- Betriebssystem (mit Versionsangabe)
Linux sky 2.6.8.1 #1
- verwendeter Webserver (mit Version)
- Perl (Version, Pfad zu Perl)
- Mailserver (Version, Pfad zum Sendmail-Wrapper, falls vorhanden)
Server API: Apache
Pfad zu Perl: usr/bin/perl
Pfad zum Mailer: usr/sbin/sendmail
Ich vermute: Eine Linux- oder BSD-Variante mit apache, aber meine Glaskugel ist derzeit ziemlich schmutzig und daher noch unzuverlässiger als sonst :-)
war wohl gar nicht so schlecht ;-)
Apache/1.3.33
log:
"GET /mailer.html HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"POST /cgi-bin/mailer.pl HTTP/1.1" 500 609 "http://www.junkpile.de/mailer.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"