Erwin: Perl von externer Eingabe ausführen

Beitrag lesen

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?