Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]641[/thread]

Über cgi-Script Programm starten/stoppen (Seite 2)



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
ja.bla
 2006-01-08 23:47
#6519 #6519
User since
2006-01-07
9 Artikel
BenutzerIn
[default_avatar]
[quote=opi,08.01.2006, 22:31]...
Diese print's mit HTML Ausgabe in deinem Skript sind einfach
hässlich, dabei hast du mit use CGI... doch einen so guten
Anfang gemacht. :-)

Eine Frage:

Ist es eigentlich möglich, die Umgebung so zu manipulieren,
dass statt sh ein rm aufgerufen wird? Ich dachte da an sowas
wie

alias sh="rm"
...[/quote]
Das is mein erster Perlkontakt und ich finde es geht gut voran :D
Kannst Du mir das mit dem "print" und dem "alias" etwas genauer erklären. Ich will später eh das Shell-Script durch Perlcode ersetzen (wenn möglich?). Also immer her mit Infos.
renee
 2006-01-08 23:57
#6520 #6520
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du schon - lobenswerterweise - das CGI-Modul benutzt, dann koenntest Du auch die HTML-Ausgaben mit dem Modul machen...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $cgi = CGI->new();
my $argument = $cgi->param("argument");

print $cgi->header(),$cgi->start_html(-title => 'App starten,stoppen');

###############
# Linkeinbauen#
###############
print $cgi->a({href=>"http://www.google.de"},"Google");

if ($argument =~ m/start/) {
print "Argument = $argument - Programm wird gestartet.<br>\n";
my $start = `sh /home/jabla/sh_script/app_start.sh`;
print $start;
}
elsif ($argument =~ m/stop/) {
print "Argument = $argument - Programm wird gestopt.<br>\n";
my $stop = `sh /home/jabla/sh_script/app_stop.sh`;
print $stop;
}
else {
print "Argument ungueltig - Programmstatus wird angezeigt.<br>\n";
my $status = `sh /home/jabla/sh_script/app_status.sh`;
print $status;
}
print $cgi->end_html();
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2006-01-09 00:55
#6521 #6521
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=ja.bla,08.01.2006, 22:47]Das is mein erster Perlkontakt ...[/quote]

Dann scheinst du hier auch am richtigen Ort zu sein, soweit ich das bis
jetzt beurteilen kann. Für einen guten Einstieg in Perl ist die Perldoc zu
empfehlen, die es hier dank einiger Leute und Übersetzungsarbeit
teilweise auf deutsch gibt. Das von Tina Müller - alias pq - übersetzte
perlintro ist für den Anfang sehr gut.

[quote=ja.bla,08.01.2006, 22:47]Kannst Du mir das mit dem "print" und dem "alias" etwas genauer erklären. Ich will später eh das Shell-Script durch Perlcode ersetzen (wenn möglich?). Also immer her mit Infos.[/quote]

Auf die Sache mit den print's ist Renee eingegangen - ein Glück, ich kann
nämlich kein CGI :-). Die Sache mit dem alias kannst du gleich wieder aus
deinem Kopf streichen, weil Shell-Aliase keine Geltung in Perl-Skripts
haben.

Allerdings ist es möglich, dass ein Angreifer deine Umgebung manipuliert
und ein eigenes "sh" erzeugt, das wiederrum bösen Code enthalten kann.
Deshalb ist es immer sicherer mit der Option -T im Shebang zu arbeiten,
wenn du für das Web entwickelst, denn der Taint-Modus zeigt dir viele
unsichere Stellen in deinem Code - wenn es welche gibt.

Wenn du nur mal zum Testen #!/usr/bin/perl -wT im Shebang setzt, dann
wird dir beim Ausführen von `sh /home/jabla/sh_script/app_start.sh`
folgende Meldung ausgegeben ...

Insecure $ENV{PATH} while running with -T switch at ...

Du bist also gezwungen, $ENV{PATH} zu setzen.

$ENV{PATH} = '/bin';

Unter /bin liegt entweder das Binary sh oder ein Link namens sh, der auf
bash zeigt. Jetzt ist die Ausführung von `sh /home/jabla/sh_script/app_start.sh`
sicher, weil der Pfad zu 'sh' fest definiert ist und nicht verwechselt werden
kann.\n\n

<!--EDIT|opi|1136764968-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
J-jayz-Z
 2006-01-09 11:14
#6522 #6522
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du kannst das entweder mit alias machen oder aber einen Symlink von sh nach rm machen (ln -s /bin/sh /bin/rm).
Desweiteren kannst du natürlich ein kleines C Programm schreiben und /bin/sh umbenenn und das script mit dem Namen sh im /bin Ordner sichern. Dieses kleine Programm macht dann nicht anderes wie argv[1] zu löschen.
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-01-07 20:35.