Moin,
ist es eigentlich möglich über ein Eingabeformular, welches an ein Perlscript gebunden ist, von außen über dieses Eingabeformular Befehle einzugeben ?
Ja, aber Vorsicht! Wenn eingegeben werden kann
ls -l
und das PERL/CGI das Ergebnis
$ergebnis = qx(ls -l);
ausgibt ist das ok.
Aber, jetzt gibt einer ein:
ls -l | rm -f *
dann wird letztendlich ein rm -f * gemacht.
Besser: Die Kommandos nicht frei eingebbar zu machen sondern fest codieren, siehe Bsp. weiter unten
Rolf
=cmd.cgi, kontrolle Acces_log im Browser
#!/usr/bin/perl
Eigene Systemkommandos definieren
Rolf Rost, 13.9.2002
%cmds = (
"err_tail_005","tail -5 /home/netlab/logs/error.log",
"err_tail_010","tail -10 /home/netlab/logs/error.log",
"err_tail_020","tail -20 /home/netlab/logs/error.log",
"err_tail_050","tail -50 /home/netlab/logs/error.log",
"err_tail_100","tail -100 /home/netlab/logs/error.log",
"trans_tail_005","tail -5 /home/netlab/logs/transfer.log",
"trans_tail_010","tail -10 /home/netlab/logs/transfer.log",
"trans_tail_020","tail -20 /home/netlab/logs/transfer.log",
"trans_tail_050","tail -50 /home/netlab/logs/transfer.log",
"trans_tail_100","tail -100 /home/netlab/logs/transfer.log",
);
###########################################################################
if($ENV{'QUERY_STRING'}){
print "Content-type:text/plain\n\n";
$cmd = $cmds{"$ENV{'QUERY_STRING'}"} or err("Parameter nicht erlaubt!!!");
$v = qx($cmd) or err("Es wurde keine Ausgabe erstellt.");
print "$cmd\n\n$v\n";
}
else{
print "Content-type:text/html\n\n";
print qq( <h2> Commands for my server </h2>);
foreach $key(sort keys %cmds){
print qq([<a href="$ENV{'SCRIPT_NAME'}?$key"> $key </a>]\n);
}
}
sub err{
print $_[0];
exit;
}
exit;
=cut
SELFforum - Das Tor zur Welt!
Theoretiker: Wie kommt das Kupfer in die Leitung?
Praktiker: Wie kommt der Strom in die Leitung?