PHP Umgang mit dem Konzept einer Root-Angabe oder -Definiton

cumulonimbus8

Admiral
Dabei seit
Apr. 2012
Beiträge
9.888
Hallo!

Ich wähle PHP weil vielleicht dort noch etwas möglich ist, außerhalb der Gedanken mit denen ich um mein Problem kreise.

Unter DOS gibt es ja SUBST mit dem ich in Form eines Laufwerkbuchstabens ein Root-Verzeichnis deklarieren an dem sich ein Aufruf wie \Otto\Hans\Rüdiger.Exe orientieren würde. Ohne so eine Root verliefe sich das im Sande.

Arbeitsort über SSH (oder PUTTY, egal) ist ein gehosteter Server mit mehreren Domains. Logge ich mich ein befinde ich mich schon mal oberhalb der Domains (und wenn ich ls / ausführe sehe ich die Root des Providerservers!!! {Herzinfakrt})

Annahme: ein (PHP-)Skript eines erworbenen Programmes, das ich gewiss nicht komplett aufdröseln rückentwickeln, will, verwendet das oben genannte Konzept sich nicht nicht mühsam mit ../../ usw. vorzuhangeln sondern setzt bei / an. Ich erleide einen Unfall, rufe ich mich mühsam nach unten gehangelt vor Ort auf. Und auch von weiter oben (das hatte ich vorher mit aufrufen über URL und Subdomains mit WebSpace in unterschiedlicher Verzeichnishierarchieebene angetestest) dürfte ich am mutmaßlichen root-Problem gescheitert sein.

Kann ich innert SSH/PUTTY etwas drehen dieses Verzeichnis XY vorläufig als Root anzunehmen, analog zu SUBST? Oder ist bei PHP etwas möglich einen ›Deckel‹ zu deklarieren?

CN8
 

Jesterfox

Fleet Admiral
Dabei seit
März 2009
Beiträge
40.086
http://de.wikipedia.org/wiki/Chroot

Funktioniert aber nur für den aktuellen Prozess, alos z.B. die SSH Session. Allerdings wird häufig der PHP-Prozess im Webserver ebenfalls mit chroot (oder ähnlichem) gestartet. Müsstest du mal über entsprechende PHP-Skripte ausprobieren wie weit du von dort aus auf das Dateisystem zugreifen kannst.

Aber dass du vom SSH aus das Root-Verzeichnis siehst ist eher normal... du hast halt nur soweit Berechtigungen wie dir das ganze dort "gehört".
 

rumbalotte

Lieutenant
Dabei seit
Okt. 2010
Beiträge
668
Anmerkung: Wenn ein (vor allem erworbenes) PHP Programm auf absolute Pfade setzt, ist es den Kauf nicht Wert.
Selbst bei Eigententwicklungen ist es mir noch nicht passiert, dass ich nicht mit relativen Pfaden gearbeitet hätte
Das PHP Script selber sollte auch in der Verzeichnisstruktur des Webservers laufen (z.B. /var/www/), dort evtl. seine eigenen Unterverzeichnisse haben und nichts dadrüber zu suchen haben.

Dazu kommt noch, dass dies hoffentlich nicht unter dem User "root" läuft, sondern mit einem entsprechend angelegten (oder den automatischen, welche für einen Webserver angelegt werden, wie z.B. www-data), welcher entsprechend wenig aurfarbeiten kann
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Arbeitsort über SSH (oder PUTTY, egal) ist ein gehosteter Server mit mehreren Domains. Logge ich mich ein befinde ich mich schon mal oberhalb der Domains (und wenn ich ls / ausführe sehe ich die Root des Providerservers!!! {Herzinfakrt})
Wenn dein Hoster nicht vollkommen beknackt ist (und du ihn dementsprechend umgehend wechseln solltest), dann verwendet er bereits eine erweiterte Chroot-Lösung wie Jailkit. Wenn du dich einloggst und dann "ls /" machst, siehst du zwar scheinbar einen normalen Unix Root, tatsächlich bleibst du aber in deinem eigenen Verzeichnisbaum, weit außerhalb des echten Roots.
 

asdfman

Commander
Dabei seit
März 2008
Beiträge
2.315
OP hat auch SUBST nicht verstanden. Die Wurzel des Namespaces liegt über den Volumebuchstaben, wird aber in der Shell nicht angezeigt. Dafür hat der Shell Namespace noch eine eigene unabhängige Wurzel (die auch über den Volumes liegt) und die vor dem Benutzer versteckt wird. Etwas äquivalentes zu chroot gibt es unter Windows nicht. Und muss ich immer noch betonen, dass NT-basierte Windowse kein DOS mehr haben?
 

cumulonimbus8

Admiral
Ersteller dieses Themas
Dabei seit
Apr. 2012
Beiträge
9.888
@asdfman:
Fall OP = TE dann..:
Weißt', SBUST tut bei mir unter 8.1 wundervoll und wunderbar war es soll. SUBSTe ich ein UV als LW dann kann innerhalb des LB keine Referenzierung \… höher als der Buchstabe = das UV. Und allein dieses Resultat wollte ich als Beispiel für meien Wusch anbringen.

@Daaron
Dafür, dass Null&Null am Telefon etwas unklar war und von Sicherheitslücke sprach ohne klarzustellen, dass ich nur heiße Luft sehe (auf wie aber potenziell /… anspringt) - das ist doch putzig, gelle?


Sodele, CHROOT war das was seit alter Zeit irgendwo in meienm Kopf spukte. Danke für den Wink mit de Zaunlatte.
Dumm ist, dass dieser {zensiert} Server das Kommando nicht im Vorrat hat. Und so langsam kriege ich die Kreise, dass selbst PHP da veraltet ist und es ggf. deshalb nicht läuft. Ich habe ebne rumgestochert, mit lokalem unter XAMPP verglichen und sehe wahrlich keinen Grund für die Fehlermeldungen die mir um die Ohren sausen.

CN8
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Dann kann ich dir nur denselben Rat wie bisher geben: Wende dich an Profis, wenn du professionelle Ergebnisse willst. Evtl. sollte dein Chef nicht gerade dich damit beauftragen, solche Probleme zu lösen, denn du bist dafür nicht qualifiziert. Oder sollst du auch das Auto deines Chefs reparieren, weil du zufälligst weißt, wie rum man einen Hammer hält?
 

asdfman

Commander
Dabei seit
März 2008
Beiträge
2.315
Weißt', SBUST tut bei mir unter 8.1 wundervoll und wunderbar war es soll. SUBSTe ich ein UV als LW dann kann innerhalb des LB keine Referenzierung \… höher als der Buchstabe = das UV. Und allein dieses Resultat wollte ich als Beispiel für meien Wusch anbringen.
Klar tut subst was es soll, aber nicht das, was du willst und etwas auch nur annähernd ähnliches wie chroot erst recht nicht. Wie wäre es (abgesehen vom trivialen 'type Q:\irgendwas') mit dem hier?



Genau so ein Directory Traversal, wie du es nicht haben willst.
 
Top