was ist daran falsch ?
Alain
- perl
Hallo,
ich versuche ein perlscript #!/usr/bin/perl -T
laufen zu lassen aber der server meldet bei -T einen fehler für
open(MAIL,"|$mailprog -t") || die "Cannot open $mailprog!\n";
ist anscheinend zu unsicher und oder falsch?
In selfhtml stehts aber genau so!?
Gruss vom Alain
Hi,
ich versuche ein perlscript #!/usr/bin/perl -T
laufen zu lassen aber der server meldet bei -T einen fehler für
open(MAIL,"|$mailprog -t") || die "Cannot open $mailprog!\n";
Wie lautet denn die Fehlermeldung?
Viele Grüße
Torsten
Hallo,
Wie lautet denn die Fehlermeldung?
-------------
Software error:
syntax error at ok.cgi line 50, near "sub sendmail
open "
Execution of ok.cgi aborted due to compilation errors.
For help, please send mail to the webmaster (webmaster@irgendwas.com), giving this error message and the time and date of
the error.
--------
hatte natürlich noch use CGI::Carp qw(fatalsToBrowser); aktiviert,aber
viel mehr stand da ja nicht.
Gruss vom Alain
Hi,
syntax error at ok.cgi line 50, near "sub sendmail
Poste doch mal die Sub "sendmail" und wie du das Mailprogramm definiert hast.
Viele Grüße
Torsten
Hallo,
Poste doch mal die Sub "sendmail" und wie du das Mailprogramm definiert hast.
$mailto = 'alain_ch@gmx.de';
$mailprog = '/usr/sbin/sendmail';
$ips = "$ip_now, $file, $agent, $ref";
$ok = "deny from $ip_now";
&sendmail();
sub sendmail
open (MAIL,"|$mailprog -t") || print "konnte nicht gestartet werden\n";
{
print MAIL "To: $mailto\n";
print MAIL "From: $mailto\n";
print MAIL "Subject: hacker zugriff auf server\n";
print MAIL "Sicherheitsmeldung\n";
print MAIL "$ips\n";
print MAIL "Der Zugriff wurde eingetragen in die htaccess \n";
close (MAIL);
&redir();
}
Gruss vom Alain
Hallo nochmal,
Hallo,
Poste doch mal die Sub "sendmail" und wie du das Mailprogramm definiert hast.
so
sub sendmail
{
open (MAIL,"|$mailprog -t") || print "konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "From: $mailto\n";
print MAIL "Subject: hacker zugriff auf server\n";
print MAIL "Sicherheitsmeldung\n";
print MAIL "$ips\n";
print MAIL "Der Zugriff wurde eingetragen in die htaccess \n";
close (MAIL);
&redir();
}
funktionierts auch nicht .
Fehlermeldung vom server:
Content-type: text/html
Software error:
Insecure $ENV{PATH} while running with -T switch at ok.cgi line 50.
For help, please send mail to the webmaster (webmaster@irgendwas.com), giving this error message and the time and date of
the error.
------
Gruss vom Alain
Hi,
sub sendmail
Insecure $ENV{PATH} while running with -T switch at ok.cgi line 50.
Soweit ich das verstanden habe, betrachtet das Script im Taint-Modus erstmal jede von außen kommende Eingabe als "böse". Du müsstest also erstmal alles, was von außen kommt, wie z.B. dein $ENV{'PATH'}, durch eine Prüfung laufen lassen, z.B. mit RegExp. Vielleicht hilft dir da diese Lektüre weiter:
http://www.perldoc.com/perl5.8.0/pod/perlsec.html
http://www.gunther.web66.com/FAQS/taintmode.html
Viele Grüße
Torsten
Hallo,
Soweit ich das verstanden habe, betrachtet das Script im Taint-Modus erstmal jede von außen kommende Eingabe als "böse". Du müsstest also erstmal alles, was von außen kommt, wie z.B. dein $ENV{'PATH'}, durch eine Prüfung laufen lassen, z.B. mit RegExp. Vielleicht hilft dir da diese Lektüre weiter:
http://www.perldoc.com/perl5.8.0/pod/perlsec.html
http://www.gunther.web66.com/FAQS/taintmode.html
Danke für den tipp.
So wie ich das sehe könnte das problem beim
open (MAIL,"|$mailprog -t"..... liegen,
^^ ^^
weil im taint modus der server nur sowas wie
open(DATEN,"<$htpasswd")
^^
akzeptiert ohne < oder >> gehts wohl nicht.
Gruss vom Alain
Hallo nochmal,
Soweit ich das verstanden habe, betrachtet das Script im Taint-Modus erstmal jede von außen kommende Eingabe als "böse".
aber das problem liegt offensichtlich beim oeffnen vom mailprog
(ich glaube dass dem server das "|" nicht gefällt),das
eigentlich gar nicht von aussen her geöffnet wird (und mit eingaben beeinflussbar ist),
das cgi führt diese mail immer aus an mich,sobald es aufgerufen wird.
Gruss vom Alain
Hi Alain,
$ips = "$ip_now, $file, $agent, $ref";
Woher kommen diese Variablen? Der Taint Modus verhindert ja, dass gefährliche Befehle, wie etwa system-befehle die Variablen beinhalten, die nicht überprüft werden, ausgeführt werden. Daher muss du eventuell die Variablen noch überprüfen.
Grüße Andres Freund
Hallo Alain,
hast Du die Variable "$mailprog" überhaupt definiert? zum Beispiel nach /usr/bin/mail ?
In den Beispielen von selfhtml stehen ja nicht fertige Programme, sondern Problemlösungen, da darf man schon selbst auch noch mal nachdenken und das Programm verstehen...
Gruß!
Pöt
Hallo,
hast Du die Variable "$mailprog" überhaupt definiert? zum Beispiel nach /usr/bin/mail ?
ja hab ich
$mailprog = '/usr/sbin/sendmail';
das script funktioniert ja ,aber nicht im #!/usr/bin/perl -T modus
im #!/usr/bin/perl -w funktionierts auch.Ich möchte es aber zur sicherheit im -T modus laufen lassen.
Gruss vom Alain