Дырка в хостинге или как с ней жить

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Дырка в хостинге или как с ней жить

Непрочитанное сообщение wien » 2017-04-24 12:24:56

Всем здравия, товарищи.

Использую FreeBSD 11, nginx 1.11.10, apache 2.4 + suexec, mod_fastcgi (через него работает пхп), mysql 5.6. Небольшой скромный хостинг для десятка сайтов. Каждый сайт "запущен" от своего пользователя.
Обнаружил, если пользователь выполнит PHP код следующего содержания:

Код: Выделить всё

<?php
readfile("/etc/passwd");
?>
Тогда в браузер будет выведен полный список пользователей системы. Тем самым запросив через ф-цию readfile любой файл в системе, в маске прав которого для всех прочих пользователей будет например 4,6,5 или 7 он будет прочитан. ИМХО это серьезная проблема безопасности.
Хочу заметить, что один из популярных хостеров тоже имеет такую же проблему. Сам лично проверил, и вообще не запаривается с отключением функций php (disable_functions). У меня часть функций отключена. Два вопроса:

1. Безопасно ли оставить все как есть? Если нет прошу рекомендаций.
2. Если очень известный хостер имеет схожую проблему, возможно не стоит об этом беспокоиться? Там думаю не студенты работают.

Если нужна будет дополнительная информация - предоставлю, в общих чертах описал картину.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

ded_samogon
проходил мимо

Дырка в хостинге или как с ней жить

Непрочитанное сообщение ded_samogon » 2017-04-24 18:19:29

Ну, так-то вроде этот файл не должен читаться не от рута. Вроде как chmod'ом и chown'ом рулится. А доступа к нему не будет, потому что у тебя сервер апача/энжинкса + php запущен от www (ну так должно быть).
Если иначе, то в саппорт говнохостинга пиши.

Andrey
рядовой
Сообщения: 19
Зарегистрирован: 2007-08-31 8:56:24

Дырка в хостинге или как с ней жить

Непрочитанное сообщение Andrey » 2017-04-24 19:52:20

Это нормально. Если хочется иначе, то смотреть в сторону чего-либо вроде CloudLinux с CageFS.

guest
проходил мимо

Дырка в хостинге или как с ней жить

Непрочитанное сообщение guest » 2017-04-25 8:12:13

wien писал(а):Всем здравия, товарищи.

Использую FreeBSD 11, nginx 1.11.10, apache 2.4 + suexec, mod_fastcgi (через него работает пхп), mysql 5.6. Небольшой скромный хостинг для десятка сайтов. Каждый сайт "запущен" от своего пользователя.
Обнаружил, если пользователь выполнит PHP код следующего содержания:

Код: Выделить всё

<?php
readfile("/etc/passwd");
?>
Тогда в браузер будет выведен полный список пользователей системы. Тем самым запросив через ф-цию readfile любой файл в системе, в маске прав которого для всех прочих пользователей будет например 4,6,5 или 7 он будет прочитан. ИМХО это серьезная проблема безопасности.
Хочу заметить, что один из популярных хостеров тоже имеет такую же проблему. Сам лично проверил, и вообще не запаривается с отключением функций php (disable_functions). У меня часть функций отключена. Два вопроса:

1. Безопасно ли оставить все как есть? Если нет прошу рекомендаций.
2. Если очень известный хостер имеет схожую проблему, возможно не стоит об этом беспокоиться? Там думаю не студенты работают.

Если нужна будет дополнительная информация - предоставлю, в общих чертах описал картину.
# ls -lao /etc/passwd

вывод изучать до просветления

если файл доступен для чтения всем остальным, в чем проблема? и где здесь прокол в security?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Дырка в хостинге или как с ней жить

Непрочитанное сообщение Alex Keda » 2017-04-27 15:36:08

ну будут знать имена всех пользователей
дальше что?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Дырка в хостинге или как с ней жить

Непрочитанное сообщение wien » 2017-04-27 22:31:32

Проблема не только в доступности списке пользователей. Не очень спокойно спиться с осознанием того, что пользователи хостинга могут получить и к другим файлам, чтение которых позволяет файловая система. Нельзя как-то в chroot запереть?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Дырка в хостинге или как с ней жить

Непрочитанное сообщение Alex Keda » 2017-04-28 13:59:53

Andrey писал(а): то смотреть в сторону чего-либо вроде CloudLinux с CageFS
Отправлено спустя 35 секунд:
или правильно расставить права, чтобы никто не получил доступ к чужим данным
Убей их всех! Бог потом рассортирует...

Bacek_92
мл. сержант
Сообщения: 70
Зарегистрирован: 2010-05-22 18:02:03

Дырка в хостинге или как с ней жить

Непрочитанное сообщение Bacek_92 » 2017-04-30 14:17:14

Пардон за "небольшую наглость":
у каждой технологии есть свои плюсы и свои минусы.
Не нравиться то что дается "как есть" - напишите свое.
А хотите забронировать, то для каждого хостинга свой jail со своим окружением(APACHE+PHP).
А то, что там почитаем имена пользователей - толку все равно не будет, если у них там

Код: Выделить всё

# cat /etc/passwd
...
www-user-bond007:*:1777:1777:James Bond:/home/bond007:/usr/sbin/nologin
стоит - ваапще пофиг. Даже с любым паролем.
А если вообще параноик, то тогда так:

Код: Выделить всё

# cat /etc/ssh/sshd_config
...
PermitRootLogin no
...
AllowUsers vasyapupkin-local@192.168.0.* vasyapupkin-external operator777 KlavaMushkuna
И потом, php-файл для теста

Код: Выделить всё

<pre><?php
	echo `whoami`;
?></pre>
Если там тот user, который Вы указали - нормас. Далее рулите указанием жестких прав на то, куда юзера лазить не должны.

Вот это:

Код: Выделить всё

<pre><?php
	echo `cat /etc/passwd`;
?></pre>

Не есть проблемой ваабще!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Дырка в хостинге или как с ней жить

Непрочитанное сообщение Alex Keda » 2017-05-03 0:30:32

создайте группу, в которую включите всех www юзеров
на хомяки дайте права 701, и владельцем юзер:созданная_группа
смогут ходить тока в свой хомяк - у группы прав-то нету
--
собственно, это единственное что надо сделать. после чего про читабельность файла паролей можно не беспокится - пусть читают, всё равно не зайдут в чужой хомяк.
--
апач, разумеется, должен быть mpm-itk
Убей их всех! Бог потом рассортирует...