PHP Shell

Aus Mikiwiki
Wechseln zu: Navigation, Suche

PHP Shell ist ein PHP-Skript, das eine Shell-ähnliche Oberfläche zur Verfügung steht. Damit können neben Shellskripten auch die meisten auf Webrechnern installierten nicht-interaktiven Programme aufgerufen werden, allerdings keine interaktiven Programme (z. B. vi). Für letztere gibt es eine Erweiterung der PHP Shell.

Eine häufige Anwendung ist der Zugriff auf einen Rechner, bei dem entweder die Firewall den Zugang per SSH blockiert oder auf dem man selber keine Software im Dateisystem installieren kann, beispielsweise ein Webrechner.

Konzept

Zur Ausführung von Shell-Befehlen genügt ein PHP-fähiger Webbrowser. Dazu darf allerdings der (als veraltet geltende) Safe Mode von PHP nicht aktiviert sein.

PHP Shell stellt eine Befehlszeile zur Verfügung, die folgenden Beschränkungen unterliegt:

  • Jeder Befehl muss ohne weitere Benutzereingabe auskommen. Interaktive Programme (z. B. vi oder top) lassen sich nicht bedienen.
  • Jeder Befehl muss in eine Zeile passen - PHP Shell erkennt nicht, das ein Befehl noch fortgesetzt werden müsste. So kann beispielsweise eine for-Schleife nicht wie in einer normalen Shell auf mehreren Zeilen eingegeben werden.
  • Jeder Befehl muss innerhalb einer bestimmten Zeitspanne abgearbeitet sein, üblicherweise innert 30 Sekunden. Diese Beschränkung ist allerdings nicht durch die PHP Shell bedingt, sondern durch den Webserver und PHP. Die entsprechende Beschränkung kann im Apache HTTP Server über die Direktive "Timeout" und in PHP über die Einstellung "max_execution_time" (in der Datei "php.ini") verändert werden.

Die Befehle werden unter der UID und GID des Webservers ausgeführt, wie sich durch Aufruf von id sehen lässt. Es sit dabei nicht möglich, sich mittels su als anderer Benutzer anzumelden.

PHP Shell bietet eine einfache History-Funktion sowie einen einfachen Texteditor, der wie folgt aufgerufen werden kann:

$ editor file.txt

Installation

Herunterladen der PHP Shell.

Übertragen der Datei "phpshell-2.2.tar.gz" ins Webverzeichnis auf den Zielrechner und dort entpacken.

# tar xzf phpshell-2.2.tar.gz

Erstellen eines Benutzers samt Passwort über folgenden URL. Bei Bedarf können auch mehrere Benutzer angelegt werden.

http://zielrechner/phpshell-2.2/pwhash.php

Als Ausgabe erscheint eine Zeile der folgenden Art:

benutzername = "sha1:xyxyxyxy:abcdefghijklmnopqrstuvwxyzabcdefghijklmn"

Diese Zeile muss in die Datei "config.php" in den Abschnitt "[users]" eingefügt werden.

# vi phpshell-2.2/config.php
[users]
benutzername = "sha1:xyxyxyxy:abcdefghijklmnopqrstuvwxyzabcdefghijklmn"

PHP Shell kann nun über folgenden URL aufgerufen werden.

http://zielrechner/phpshell-2.2/phpshell.php

Die Datei "pwhash.php" sollte nach Erzeugen des gewünschten Benutzers verschoben werden, damit kein Unbefugter neue Benutzer anlegen und sich so auf dem Rechner anmelden kann.

Als zusätzlicher Schutz sollte das Verzeichnis, in dem sich die Datei "phpshell.php" befindet, umbenannt und mittels .htaccess geschützt werden.

Konfiguration

In der Datei "config.php" können auch Shell-Aliase sowie ein Heimverzeichnis für PHP Shell festgelegt werden.

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
country US.gif Sourceforge eng PHP Shellwbm