Hallo! Verfolgt hier jemand das PHP-Problem wie in der aktuellen c´t geschildert? Ich habe hier die php.ini folgendermaßen verändert, safe_mode = On doc_root = /usr/local/httpd/htdocs/ftphome user_dir = /usr/local/httpd/htdocs/ftphome/~ aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen. Das ist nicht so gut. Ich wüßte im Moment nicht, wie ich dieses Problem lösen sollte. -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
an Andreas Meyers Tastatur wurde am Dienstag, 2. Juli 2002 23:50 folgendes notiert:
Hallo!
Verfolgt hier jemand das PHP-Problem wie in der aktuellen c´t geschildert?
Jo, erst so ein Aufstand machen und dann nur zwei Seiten.
Ich habe hier die php.ini folgendermaßen verändert, safe_mode = On
Server neu gestartet?
doc_root = /usr/local/httpd/htdocs/ftphome
; The directory under which PHP opens the script using /~usernamem used
user_dir = /usr/local/httpd/htdocs/ftphome/~
Humbug, das heisst IMHO, der php-Interpreter lehnt sein Wirken ausserhalb dieser Verzeichnisse ab. Wenn das mit Perl ginge, hätte man die Funktionalität der Shell ziemlich eingegrenzt.
aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen.
mit welchem? safe_mode_exec_dir = nach Deinen Wünschen gesetzt? (bei mir zum Beispiel /bin/safebin und da gibts links auf ausgewähle Programme, die als system-aufruf zur Verfügung stehen sollten (mysqldump etc.)) Btw: weil ich mich so über die Ankündigung des Artikels geärgert habe: der einzige überlegenswerte Hinweis in diesem Artikel ist ein chroot des apache. (tolle "IT-consultans") Hagen -- Reich ist man nicht durch das, was man besitzt, sondern durch das, was man mit Würde zu entbehren weiß. Immanuel Kant
Hallo! Am Wed, 3 Jul 2002 09:40:39 +0200 schrieb Hagen Kuehnel:
Jo, erst so ein Aufstand machen und dann nur zwei Seiten.
Ich habe hier die php.ini folgendermaßen verändert, safe_mode = On
Server neu gestartet?
ja
doc_root = /usr/local/httpd/htdocs/ftphome
; The directory under which PHP opens the script using /~usernamem used
user_dir = /usr/local/httpd/htdocs/ftphome/~
Ich muß gestehen, mir sagt diese Zeile nicht viel. Wie müßte die Zeile denn richtig lauten? user_dir = /usr/local/httpd/htdocs/ftphome ?
Humbug, das heisst IMHO, der php-Interpreter lehnt sein Wirken ausserhalb dieser Verzeichnisse ab. Wenn das mit Perl ginge, hätte man die Funktionalität der Shell ziemlich eingegrenzt.
Also würden außerhalb von ftphome gar keine PHP mehr ausgeführt?
aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen.
mit welchem?
<?php /* * Assume document root is /usr/local/websites/mydomain */ $location = '../../'; // Move up one directory //$location = '/etc'; $parent = dir($location); // List the contents of the current directory // i.e.: /usr/local/httpd/htdocs while($entry = $parent->read()) { echo $entry . '<br>'; } $parent->close(); ?> Das zeigt aber mal gewaltig Wirkung.
safe_mode_exec_dir = nach Deinen Wünschen gesetzt? (bei mir zum Beispiel /bin/safebin und da gibts links auf ausgewähle Programme, die als system-aufruf zur Verfügung stehen sollten (mysqldump etc.))
Ich habe mal auf safe_mode_exec_dir = /bin/safebin gesetzt, aber das breakout.php zeigt immer noch Wirkung.
Btw: weil ich mich so über die Ankündigung des Artikels geärgert habe: der einzige überlegenswerte Hinweis in diesem Artikel ist ein chroot des apache. (tolle "IT-consultans")
Ich hätte es begrüßt, wenn zu diesem Problem vernünftige Lösungen aufgezeichnet worden wären. Alles was ich bis jetzt versucht habe, blieb erfolglos. Und den Apache in eine chroot-Umgebung zu bringen dürfte nicht gnaz einfach sein mit einem LAMP. Für meine Begriffe macht das PHP erstmal unbrauchbar. -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
Hallo, Konrad siniert ja gerade über Sicherheit, vielleicht will er hier auch mit einhaken, warum eine Scriptsprache evtl. am Kernel vorbei, .... :) an Andreas Meyers Tastatur wurde folgendes notiert:
Am Wed, 3 Jul 2002 09:40:39 +0200 schrieb Hagen Kuehnel:
und dann noch irgenwann Andreas Meyer:
aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen.
mit welchem?
<?php .... $location = '../../'; // Move up one directory //$location = '/etc'; $parent = dir($location); ... while($entry = $parent->read()) { echo $entry . '<br>'; } $parent->close(); ?>
Das zeigt aber mal gewaltig Wirkung.
hoho, Du benutzt interne Funktionen von PHP, also kein system() oder andere exec-Komandos. ; This directive allows you to disable certain functions for security ; reasons. It receives a comma-deliminated list of function names. ; This directive is *NOT* affected by whether Safe Mode is turned On or disable_functions = dir hast Du noch ein paar relevante PHP-Funktionen auf Lager? Wenn's geht Funktionen, die meine Seiten nicht benutzen. :) (jetzt muss ich find erst mal überein GB Daten rüberjagen :()
Für meine Begriffe macht das PHP erstmal unbrauchbar.
Nana, wer wird den gleich. :) Hagen -- powered by #!/bin/bash $HOME/.sigs/random_sig.sh
Hallo! Am Wed, 3 Jul 2002 11:37:27 +0200 schrieb Hagen Kuehnel:
while($entry = $parent->read()) { echo $entry . '<br>'; } $parent->close(); ?>
Das zeigt aber mal gewaltig Wirkung.
hoho, Du benutzt interne Funktionen von PHP, also kein system() oder andere exec-Komandos.
Macht doch nichts. Die kann jeder andere auch benuzten. Und das ist das Schlimme.
; This directive allows you to disable certain functions for security ; reasons. It receives a comma-deliminated list of function names. ; This directive is *NOT* affected by whether Safe Mode is turned On or
disable_functions = dir
Wenn ich jetzt noch wüßte, welche functions. Ich muß wohl erst php und perl lernen, bevor ich die Kiste dicht kriege. Sprich, ich muß herausfinden, welche Funktionen es im einzelnen gibt unter pdp.
hast Du noch ein paar relevante PHP-Funktionen auf Lager? Wenn's geht Funktionen, die meine Seiten nicht benutzen. :) (jetzt muss ich find erst mal überein GB Daten rüberjagen :()
Und? PHP-Funktionen sind für mich böhmische Dörfer. -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
an Andreas Meyers Tastatur wurde am folgendes notiert:
Am Wed, 3 Jul 2002 11:37:27 +0200 schrieb Hagen Kuehnel:
hoho, Du benutzt interne Funktionen von PHP, also kein system() oder andere exec-Komandos.
Macht doch nichts. Die kann jeder andere auch benuzten. Und das ist das Schlimme.
Das ist der Sinn an Funktionen. :) Nee, ich war davon ausgegangen, dass system() ...
disable_functions = dir
Wenn ich jetzt noch wüßte, welche functions. Ich muß wohl erst php und perl lernen, bevor ich die Kiste dicht kriege.
Je mehr Du verbietest, desto eingeschränkter wird die Sprache. Danach nimmste Dir Perl vor? und dann mod_phyton, ..... Da geht ein chroot-apache vielleicht doch schneller? Christop[h]? hatte dir fast zeitgleich den besseren workaround gesagt. open_basedir Dann hast Du in Verbindung mit safe_mode ein relativ sicheres System (bezogen auf PHP), wenn Du für jeden vHost eine eigen ini hast, ansonsten musst Du ein basedir über allen vHosts setzen, damit siehst Du als vHoster noch ein wenig, aber dass ausspionieren von mySQL-PW, .... sollte nicht mehr funktionieren.
Sprich, ich muß herausfinden, welche Funktionen es im einzelnen gibt unter pdp.
viele :) /php-manual/function.$NAME.html Hagen -- Unterschätze nie die Macht dummer Leute, die einer Meinung sind. Kurt Tucholsky
Hallo! Am Wed, 3 Jul 2002 20:10:32 +0200 schrieb Hagen Kuehnel:
Wenn ich jetzt noch wüßte, welche functions. Ich muß wohl erst php und perl lernen, bevor ich die Kiste dicht kriege.
Je mehr Du verbietest, desto eingeschränkter wird die Sprache. Danach nimmste Dir Perl vor? und dann mod_phyton, .....
Ja klar, mach´ ich B-)
Da geht ein chroot-apache vielleicht doch schneller?
Ich weis nicht ;) Wenn ich mein IMAP- und mein Postfix- und mein Firewall-Buch durchhabe und das alles auch annähern verstanden habe, ah, und FreeS/WAN-IPSec muß auch noch durch, aber erst wenn alle Spam-filter in Postfix funktionieren. Linux in a nutshell guck ich schon gar nicht mehr an.
Christop[h]? hatte dir fast zeitgleich den besseren workaround gesagt. open_basedir Dann hast Du in Verbindung mit safe_mode ein relativ sicheres System (bezogen auf PHP), wenn Du für jeden vHost eine eigen ini hast, ansonsten musst Du ein basedir über allen vHosts setzen, damit siehst Du als vHoster noch ein wenig, aber dass ausspionieren von mySQL-PW, .... sollte nicht mehr funktionieren.
Auch auf die Gefahr hin, daß ich mich jetzt vollends blamiere, aber ich kann mit der Option open_basedir im Moment nicht das geringste anfangen. In der PHP.ini finde ich da keinen Hinweis. I´m so sorry. Bitteeee. -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
Andreas Meyer schrieb:
Auch auf die Gefahr hin, daß ich mich jetzt vollends blamiere, aber ich kann mit der Option open_basedir im Moment nicht das geringste anfangen. In der PHP.ini finde ich da keinen Hinweis. I´m so sorry. Bitteeee.
Weisst Du, es gibt zu PHP auch eine Doku, da könnte man das nachschlagen und ein paar MB an Mailverkehr sparen. http://www.php.net/manual/de/configuration.php und mit der Browsersuche nach "open_basedir" suchen. Bitteschön fauler Mann.
Hallo! Am Wed, 03 Jul 2002 21:22:42 +0200 schrieb Markus Kolb:
Weisst Du, es gibt zu PHP auch eine Doku, da könnte man das nachschlagen und ein paar MB an Mailverkehr sparen.
http://www.php.net/manual/de/configuration.php
und mit der Browsersuche nach "open_basedir" suchen.
Bitteschön fauler Mann.
Na weist Du , Großer, das ist ein sehr relativer Begriff. Diese php_admin_value open_basedir Anweisungen werfen beim Neustart des Apache nur Fehlermeldungen und der Server wird nicht gestartet. Invalid command 'php_admin_value', perhaps mis-spelled or defined \ by a module not included in the server configuration -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
und mit der Browsersuche nach "open_basedir" suchen. Diese php_admin_value open_basedir Anweisungen werfen beim Neustart des Apache nur Fehlermeldungen und der Server wird nicht gestartet.
DocumentRoot /usr/local/httpd/htdocs/xxx/yyy ServerName xxx.xxx.de
On Wed, Jul 03, 2002 at 11:06:52PM +0200, Andreas Meyer wrote: php_admin_value open_basedir /usr/local/httpd/htdocs/xxx/yyy php_admin_flag safe_mode on php_admin_value safe_mode_exec_dir /usr/local/httpd/htdocs/xxx/yyy </VirtualHost> Vorhin hat jemand mod_python eingeworfen. Das wird standartmässig aktiviert? Wo und wie kann ich das abstellen? greetinXs, Telefon: 07275/618351 Michael Hilscher Handy: 0173/3071899 Telefax: 07275/618352 -- Would Mozart have been more productive if he had scribes to help him, a secretary and a CEO to lead his way? -- Linus Torvalds
Am Thu, 4 Jul 2002 00:05:40 +0200 schrieb Michael Hilscher:
Diese php_admin_value open_basedir Anweisungen werfen beim Neustart des Apache nur Fehlermeldungen und der Server wird nicht gestartet.
php_admin_value open_basedir /usr/local/httpd/htdocs/xxx/yyy php_admin_flag safe_mode on
Vorhin hat jemand mod_python eingeworfen. Das wird standartmässig aktiviert? Wo und wie kann ich das abstellen?
Weis ich nicht, ist bei mir nicht aktiv. Bei mir krige ich auf keinem Apache diese php-Directiven aktiviert. Der Server fährt nicht mehr hoch. Module Name: mod_php4.c Content handlers: application/x-httpd-php , application/x-httpd-php-source , text/html Configuration Phase Participation: Create Directory Config, Merge Directory Configs, Child Exit Request Phase Participation: none Module Directives: php_value - PHP Value Modifier php_flag - PHP Flag Modifier php_admin_value - PHP Value Modifier (Admin) php_admin_flag - PHP Flag Modifier (Admin) Current Configuration: ---------------------------------------------------------------- Hier scheint die php.ini nicht ausgewertet zu werden oder wie ist das zu verstehen? PHP funktioniert einwandfrei. Loaded Modules mod_php4, mod_ssl, mod_setenvif, mod_so, mod_unique_id, mod_usertrack, mod_headers, mod_expires, mod_cern_meta, mod_proxy, mod_digest, mod_auth_dbm, mod_auth_anon, mod_auth, mod_access, mod_rewrite, mod_alias, mod_userdir, mod_speling, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_info, mod_status, mod_negotiation, mod_mime, mod_mime_magic, mod_log_config, mod_define, mod_env, mod_vhost_alias, http_core libphp.so wird aus der libexec geladen. Ich kann das gar nicht glauben... Invalid command 'php_admin_value', perhaps mis-spelled or defined \ by a module not included in the server configuration -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
an Michael Hilschers Tastatur wurde folgendes notiert:
Vorhin hat jemand mod_python eingeworfen.
Ich.
Das wird standartmässig aktiviert?
Wäre mir neu.
Wo und wie kann ich das abstellen?
httpd.conf oder includierte load_modules btw.: Da Stratot damit Werbung macht, wollte ich nur die vielen Möglichkeiten der Sicherheislücken nicht unerwähnt lassen:) Hagen
On Tue, Jul 02, 2002 at 11:50:00PM +0200, Andreas Meyer wrote:
Verfolgt hier jemand das PHP-Problem wie in der aktuellen c´t geschildert? Ich habe hier die php.ini folgendermaßen verändert, safe_mode = On doc_root = /usr/local/httpd/htdocs/ftphome user_dir = /usr/local/httpd/htdocs/ftphome/~
aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen.
Das ist nicht so gut. Ich wüßte im Moment nicht, wie ich dieses Problem lösen sollte.
Du suchst bestimmt die Option open_basedir die kannst du auch für jeden VirtualHost einzeln setzen indem du in die Virtualhosteinträge php_admin_value open_basedir /home/user/www/oder/was/auch/sonst reinnimmst. Sollen mehrere rein, muessen diese mit Doppelpunkt getrennt werden. gruß Christoph
Hallo! Am Wed, 3 Jul 2002 11:43:59 +0200 schrieb Christoph Kampe:
aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen.
Du suchst bestimmt die Option open_basedir die kannst du auch für jeden VirtualHost einzeln setzen indem du in die Virtualhosteinträge php_admin_value open_basedir /home/user/www/oder/was/auch/sonst reinnimmst. Sollen mehrere rein, muessen diese mit Doppelpunkt getrennt werden.
Ich fürchte, ich verstehe nicht ganz. Wo liese sich diese Option benuzten? In der php.ini? -- Gruß Andreas Meyer http://home.wtal.de/MeineHomepage
On Wed, Jul 03, 2002 at 06:55:44PM +0200, Andreas Meyer wrote:
Hallo!
Am Wed, 3 Jul 2002 11:43:59 +0200 schrieb Christoph Kampe:
aber ich komme bei Bedarf mit einem einfachen PHP-script aus dieser Umgebung heraus und kann bei entsprechender Anpassung beliebig Verzeichnisse lesen.
Du suchst bestimmt die Option open_basedir die kannst du auch für jeden VirtualHost einzeln setzen indem du in die Virtualhosteinträge php_admin_value open_basedir /home/user/www/oder/was/auch/sonst reinnimmst. Sollen mehrere rein, muessen diese mit Doppelpunkt getrennt werden.
Ich fürchte, ich verstehe nicht ganz. Wo liese sich diese Option benuzten? In der php.ini?
Ja auch, wenn du nur eine PHP Instanz nutzt geht das. Wenn du mehrere "Virtual Hosts" auf der gleichen Maschine mit einem Apache bedienst (wie viele Hoster) kannst du in jede dieser Virtual Host Direktiven die PHP Direktive direkt miteinbinden. http://www.php.net/manual/de/configuration.php#ini.open-basedir zB <VirtualHost www.domain.de> ServerAdmin webmaster@provider.de DocumentRoot /var/www/www.domain.de/ php_admin_value open_basedir /var/www/www.domain.de/ ServerName www.domain.de ErrorLog /var/log/apache/www.domain.de-error.log TransferLog /var/log/apache/www.domain.de-access.log </VirtualHost> so kannst du viele PHP Einstellungen über die php_admin_value Direktive in den Virtual Host Abschnitten setzen. Mit den php_value Direktiven kannst du das sogar in .htaccess Dateien eintragen (vorrausgesetzt du hast die entsprechenden Overrides gesetzt. Gruß Christoph
Hallo! Am Sat, 6 Jul 2002 20:00:31 +0200 schrieb Christoph Kampe: [snipp... Deine wertvollen Erklärungen]
so kannst du viele PHP Einstellungen über die php_admin_value Direktive in den Virtual Host Abschnitten setzen. Mit den php_value Direktiven kannst du das sogar in .htaccess Dateien eintragen (vorrausgesetzt du hast die entsprechenden Overrides gesetzt.
Ich war reichlich irritiert, daß ein 'apachectl graceful' eine Fehlermeldung brachte. Habe dann aber festgestellt, daß der Server dennoch gestartet wurde. stop-start brachte Besserung. Da ich auch noch Server mit php3 laufen habe, muße ich mich ja echt mit den directiven auseinandersetzen und habe festgestellt, daß für php3 z.B. folgende Anweisung notwendig ist: php3_safe_mode_exec_dir ... php3_safe_mode ... php3_open_basedir ... Da muß man erstmal drauf kommen; wenn man die Info von <? phpinfo() ?> richtig auswertet, geht das auch. Man lernt nicht aus. Danke für Deine sachliche Einlassung und Hilfe! Gruß -- Andreas Meyer http://home.wtal.de/MeineHomepage
participants (5)
-
Andreas Meyer
-
Christoph Kampe
-
Hagen Kuehnel
-
Markus Kolb
-
Michael Hilscher