Httpd + / bin / false == system ()? - PullRequest
       14

Httpd + / bin / false == system ()?

0 голосов
/ 07 октября 2011

У меня есть два веб-сервера, оба на Lighttpd + php (через fastCGI).

[user@box ~]$ lighttpd -v
lighttpd/1.4.29 (ssl) - a light and fast webserver
Build-Date: Aug  7 2011 10:52:01
[user@box ~]$ php -v
PHP 5.3.8 with Suhosin-Patch (cli) (built: Sep 30 2011 05:34:36) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
[user@box ~]$ php-cgi -v
PHP 5.3.8 with Suhosin-Patch (cgi-fcgi) (built: Sep 30 2011 05:35:14)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

Lighttpd и php-cgi работают под пользователем 'http' с / bin / false (фиктивная) оболочка:

[user@box ~]$ cat /etc/passwd | grep http
http:x:33:33:http:/srv/http:/bin/false
[user@box ~]$ ps aux | grep "lighttpd\_php-cgi"
http      1291  0.0  1.1   5152  2816 tty1     S    Oct06   0:00 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
http      1292  0.0  1.5  14476  3904 ?        Ss   Oct06   0:00 /usr/bin/php-cgi

Но я все еще могу выполнять команды оболочки с помощью функции system () php (например)!

В моем php.ini нет функций disable_functions.Если я выполню system ("whoami") или system ("id") через php, я получу следующее:

http
uid=33(http) gid=33(http) groups=33(http)

(так же, как и должно)be).

Почему я могу выполнять команды от пользователя с / bin / false в качестве оболочки?

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Как прямо сказано в документации , php's system - это просто привязка для системы на C. Из manpage системы:

system () выполняет команду, указанную в команде, вызывая /bin/sh -c command ...

/bin/false - это просто оболочка входа в систему (используется вместе с login, telnet, ssh и т. д.).

3 голосов
/ 07 октября 2011

/ bin / false тут делать нечего. Вы не можете контролировать доступ к системным командам, изменяя пользовательскую оболочку, потому что они просто НЕ выполняются через оболочку. Подробнее здесь .

...