Schreibzugriff auf PHP-Server

04/03/2014 - 17:32 von Manuel Rodriguez | Report spam
Ein Webserver mit PHP liefert eine Webseite mit einem Eingabefeld aus. Die Eingabe wird dann weitergeleitet an ein PHP Script, dass wiederum den shell_exec Befehl verwendet um auf Betriebssystemebene zu agieren. Wenn man also in das HTML Formular "ls" eingibt passiert folgendes:

<?php
$ret = shell_exec("ls");
echo ($ret);
?>

Im Grunde hat man doch damit ein System programmiert, auf das man remote zugreifen kann, oder? Ich meine, wenn man ins HTML Formular nicht "ls" reintippt sondern "rm / -rf" dann wird der komplette Webserver gelöscht.

Natürlich ist mir klar, dass hier ein Sicherheitsproblem vorliegt. Es entstand durch die Verbindung aus einem remote aufrufbaren Server und einem hübschen HTML Frontend. Aber wie bekommt man das Leck in den Griff?

Klar, escapen wàre vielleicht eine Lösung, dass man also nur Eingaben zulàsst, die keinen Blödsinn enthalten, aber wie filtert man soetwas heraus? Einerseits soll das System weiterhin seine Funktionalitàt behalten, dass also der Benutzer ganz einfach Befehle in ein HTML Formular eintràgt, andererseits soll der Benutzer aber auch nicht zuviele Freiheiten haben. Wie löst man dieses Dilemma?
 

Lesen sie die antworten

#1 dseppi
04/03/2014 - 18:42 | Warnen spam
Manuel Rodriguez schrieb:

Im Grunde hat man doch damit ein System programmiert, auf das man
remote zugreifen kann, oder?



Soweit richtig.

Ich meine, wenn man ins HTML Formular nicht "ls" reintippt sondern
"rm / -rf" dann wird der komplette Webserver gelöscht.



Das hàngt davon ab, unter welchem Benutzer Dein Webserver die
php-Scripte laufen làßt und ob dieser Benutzer entsprechende
Schreibrechte hat. Mit chroot kann man das noch weiter einschrànken,
dann kann der Prozeß aus seiner zugewiesenen Hierarchie nicht mehr raus.
(Dann geht ls aber auch nicht mehr so wie Du das willst.)

Natürlich ist mir klar, dass hier ein Sicherheitsproblem vorliegt.



Richtig.

Aber wie bekommt man das Leck in den Griff?



Das hàngt davon ab, was Dein Tool genau können soll und ob chroot eine
Lösung für Dich ist. Ansonsten sollte Dein php-Script unter einem
Benutzer laufen, der nur das darf, was Du für sinnvoll erachtest.
(Schreibrechte komplett entziehen oder nur für bestimmte Ordner
erteilen, in denen man nichts kaputt machen kann; Leserechte nur für
Dateien, die auch in die Öffentlichkeit dürfen, ...)
Du kannst außerdem durch Manipulation des Suchpfads und Verbieten
von absoluten Pfaden die zulàssigen Befehle auf eine von Dir definierte
Liste einschrànken. Da sollte dann kein Programm dabei sein, das es
erlaubt in eine Shell zu kommen (vim erlaubt z.B. so etwas).

Deine Postings werden übrigens lesbarer (und leichter beantwortbar),
wenn Du keine Zeilen mit mehr als ca. 72 Zeichen machst. ;-)

David Seppi
1220 Wien

Ähnliche fragen