[PHP] shell_exec()

tomtom

ist Papa²
21 April 2006
16.116
657
Moin,

mal so rein aus Interesse: Kann ich mit shell_exec() - vorausgesetzt safe_mode=Off - jedes Shell-Komando absetzen?

Also auch so was wie

PHP:
shell_exec("dd if=/dev/zero of=~")
 
Wenn die Funktion nicht deaktiviert is, kannst du ausführen, was du willst. Eben deshalb is sie ja auch so gefährlich.
 
Hmm, ließen sich denn bestimmte Kommandos abfangen, sodass die Funktion zwar zur Verfügung steht, aber eben nicht alles ausgeführt werden kann?
 
Wenn du ne eigene Shell programmierst, diese als Default verwendest und dort die "bösen" Kommandos filterst, ja.
 
Klingt ganz gut. Müsste wohl noch nicht mal ne vollausgereifte werden, sondern nur so ne Art Filter vor die Standard-shell hängen.

Alles klar, danke.
 
Unabhängig vom Safe-Mode, kann man die Funktion auch einfach deaktivieren (mithilfe von disable_functions) und das Sicherheitsproblem hat sich, zumindest in Bezug auf Shellkommandos, in Luft aufgelöst:

disable_functions string
This directive allows you to disable certain functions for security reasons. It takes on a comma-delimited list of function names. disable_functions is not affected by Safe Mode. This directive must be set in php.ini For example, you cannot set this in httpd.conf.

Quelle: PHP-Manual
 
Nö, der Filter ist die default-Shell. Und alles was gefiltert wird (whitelist), geht an die Standard-Shell weiter. ;)

Wüsste nicht, wie man das umgehen sollte. :think:
 
achso, bei ner whitelsit geht das natürlich, weil du filter sagtest, dachte ich erstmal du meinst einen blacklist-ansatz, bei dem es ja viele Ausweichmöglichkeiten gibt.
 
Jo, nach deinem Posting habe ich auch gemerkt, dass es eher nach ner blacklist klingt.

Nun gut, wenn ich mal ganz viel langeweile habe werd ich das mal versuchen, auch wenn ich es eigentlich nicht brauche. ^^ Aber immerhin kann ich dann sagen: Ich hab mal was gemacht, was eigentlich keine Sau braucht, aber es hat funktioniert. :ugly:
 
Nun gut, wenn ich mal ganz viel langeweile habe werd ich das mal versuchen, auch wenn ich es eigentlich nicht brauche. ^^ Aber immerhin kann ich dann sagen: Ich hab mal was gemacht, was eigentlich keine Sau braucht (1.), aber es hat funktioniert (2.). :ugly:

Hey, schau dir doch nur die ganzen Klassen auf PHPClasses.org an, sehr viele erfüllen auch nur deinen 1. Punkt, und ich denke manche davon nicht mal deinen 2. :ugly:
 
PHP ist nicht mein Liebling. Daher kann ich über die Klassen keine Wertung abgeben.