mod_fcgid ausprobiert: Komische Benutzersituation, Läuft als User, hat aber Rootrechte

Apache, Lighttpd, nginx, Cherokee
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

mod_fcgid ausprobiert: Komische Benutzersituation, Läuft als User, hat aber Rootrechte

Post by theomega » 2007-01-09 19:16

Hallo Leute,
nachdem mod_fastcgi auf meinem Hightraffic-Server nur Probleme macht, wollte ich mal auf meiner Testmaschine mod_fcgid ausprobieren. Vor allem auch, weil mod_fastcgi aus dem Rep von Gentoo wohl rausfliegen wird.

Ich fahre im Moment folgende Konfiguration:

Code: Select all

$ cat /etc/apache2/modules.d/20_mod_fcgid.conf 
<IfDefine FCGID>
    <IfModule !mod_fcgid.c>
        LoadModule fcgid_module modules/mod_fcgid.so
    </IfModule>
    <IfModule mod_fcgid.c>
        AddHandler fcgid-script .fcg
    </IfModule>
</IfDefine>
$ cat /etc/apache2/vhosts.d/01.conf
<VirtualHost *:80>
        ServerName xxx
        ServerAlias xxx

        ServerAdmin xxx
        DocumentRoot "/srv/benutzername/html/"
        SuexecUserGroup benutzername www-users

        ErrorLog /srv/benutzername/logs/error_log
        CustomLog /srv/benutzername/logs/access_log combined
</VirtualHost>

     <Directory "/srv/benutzername/html/">
                AddHandler fcgid-script .php
                Options ExecCGI
               FCGIWrapper /srv/php-fcgi-scripts/benutzername/php-fcgi-starter .php
                AllowOverride AuthConfig FileInfo Indexes Limit Options
                Order allow,deny
                Allow from all
        </Directory>
$ cat /srv/php-fcgi-scripts/benutzername/php-fcgi-starter
#!/bin/sh
PHPRC="/srv/benutzer/conf"
export PHPRC
exec /usr/bin/php-cgi


es handelt sich hierbei um den einzigen VHost. Die Gruppe "www-users" ist nicht die Gruppe als die der Apache läuft, in der Gruppe befindet sich ausschließlich der Webbenutzer. Die Idee ist einfach die, das es ein Starter-Script gibt, das für jeden Benutzer die PHPRC richtig setzt. Das ganze Setup funktioniert prinzipiel auch, also PHP-Dateien werden geparst. Jedoch produziert das ganze ein nicht ganz kleines Sicherheitsloch.

Packe ich den in den Vhost folgende PHP-Datei:

Code: Select all

<?
echo('<h1>WhoAmI</h1>');
passthru('/usr/bin/whoami');

echo('<h1>ID</h1>');
passthru('/usr/bin/id');

echo('<h1>Shadow</h1>');
$s = implode('',file('/etc/shadow'));
echo $s;
?>
Dann kommt es zu einem eigenartigen Output:
WhoAmI und ID sind sich einig das es sich um den Webbenutzer "benutzer" handelt. TROTZDEM, und das beunruhigt mich, schlägt der Zugriff auf die shadow nicht fehlt (die definitiv 700 als Permissions hat). Außerdem werden alle Dateien die PHP anlegt mit dem Benutzer root und der Gruppe "www-users" erstellt. Genauso laufen die "php-cgi"-Binaries alle als Root und nicht als normaler Webbenutzer. Komischer Fall, vor allem weil eigentlich Suexec sich um das umstellen der Benutzer kümmern sollte und das eigentlich auch tut:

Code: Select all

$ cat /var/log/apache2/suexec_log
[2007-01-09 19:02:42]: uid: (1002/benutzer) gid: (1003/1003) cmd: php-fcgi-starter
[2007-01-09 19:08:16]: uid: (1002/benutzer) gid: (1003/1003) cmd: php-fcgi-starter
Wobei es mich ein bischen verwirrt, das einmal benutzerids, das andere mal benutzername dranstehen. 1002 ist auf jeden Fall die ID von "benutzer" und 1003 die ID der Gruppe "www-users". Laut error-Log ist suexec definitv aktiv:

Code: Select all

[Tue Jan 09 19:08:13 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Tue Jan 09 19:08:13 2007] [notice] Apache configured -- resuming normal operations
[Tue Jan 09 19:08:16 2007] [notice] mod_fcgid: call /srv/benutzer/html/test.php with wrapper /srv/php-fcgi-scripts/benutzer/php-fcgi-starter
[Tue Jan 09 19:08:16 2007] [notice] mod_fcgid: server /srv/benutzer/html/test.php(21546) started
Wer kan sich darauf einen Reim machen, vor allem wiso whoami falsche Informationen ausgibt?

[edit]
Genauso geben die PHP-Funktionen get_current_user und getmyuid die eigentlich richtigen werte (Also den normalen benutzer) zurück, die aber nicht stimmen.


Danke schonmal
TO

theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: mod_fcgid ausprobiert: Komische Benutzersituation, Läuft als User, hat aber Rootrechte

Post by theomega » 2007-01-09 21:26

So,
nach eingehender Analyse und nachdem die Sache immer mistoriöser wurde (ganz nett: mit sudo zum benutzer geworden, konnte /etc/shadow nicht lesen, aber über ein PHP-Script schon) hat es mir dann gedämmert: aus mir total unerfindlichen Gründen ist auf meinem Gentoo-System die PHP-Binary mit SUID-Bit installiert. Grob fahrlässig wenn das bei jedem so ist, Dummheit wenn ich es so hingebogen habe ausversehen, ich kann es jetzt nichtmehr nachvollziehen. Zumindest funktioniert alles wenn man das Bit wieder wegnimmt.

Gruß
TO

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: mod_fcgid ausprobiert: Komische Benutzersituation, Läuft als User, hat aber Rootrechte

Post by Joe User » 2007-01-09 23:15

Auf meinen Gentoo-Hardened-Kisten sieht es so aus:

Code: Select all

$ ls -alh /usr/bin/php*
lrwxrwxrwx 1 root root 21 2006-06-01 22:29 /usr/bin/php -> /usr/lib/php5/bin/php
lrwxrwxrwx 1 root root 25 2006-06-01 22:29 /usr/bin/php-cgi -> /usr/lib/php5/bin/php-cgi
lrwxrwxrwx 1 root root 28 2006-06-01 22:29 /usr/bin/php-config -> /usr/lib/php5/bin/php-config
lrwxrwxrwx 1 root root 24 2006-06-01 22:29 /usr/bin/phpize -> /usr/lib/php5/bin/phpize
$ ls -alh /usr/lib/php5/bin/php*
-rwxr-xr-x 1 root root 6.8M 2007-01-09 18:21 /usr/lib/php5/bin/php
-rwxr-xr-x 1 root root 6.8M 2007-01-09 18:21 /usr/lib/php5/bin/php-cgi
-rwxr-xr-x 1 root root 1.3K 2007-01-09 18:21 /usr/lib/php5/bin/php-config
-rwxr-xr-x 1 root root 4.1K 2007-01-09 18:21 /usr/lib/php5/bin/phpize
$
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: mod_fcgid ausprobiert: Komische Benutzersituation, Läuft als User, hat aber Rootrechte

Post by theomega » 2007-01-09 23:17

Ja, auf meinen anderen beiden Gentoo-Hardened Kisten auch, also wohl meine Dummheit. Gut das es nur die Testmaschine war, sonst wäre es riskant geworden.