Shared Hosting Security

anight

Новичок
Автор оригинала: rudik
1. Интересно было бы услышать о том, как можно похакать Apache, который запущен от root и пропатчен на запуск каждого ответа под uid/gid пользователя?
это вы про статью http://php4you.kiev.ua/docs/dk/apache_hack.html ?
я явно поторопился добавить коментарий про то что патч "грамотный".
vfork() использовать там категорически нельзя! по крайней мере так как предлагает автор. последствия очевидны - непревилегированный пользователь сравнительно просто может получить права root.
как ? так :
vfork() отличается от fork() тем что адресное пространство для обоих процессов - одно. при том, один процесс остается привелегированным, а другой нет. сама атака мне представляется следующим образом :
1) подгружаем свой extension
2) размещаем shell код (malloc подойдет)
3) бежим по фреймам стека вверх и меняем все адреса возврата на shell код.
4) делаем exit()
5) рутовый apache выходит из vfork() и делает return прямо на наш код. вуаля.

workaround - safe_mode в котором гораздо сложнее исполнить свой код.
 

AndreyS

Guest
Автор оригинала: ClayRabbit
А апач проверяет owner'a ? ;)
Причем тут Apache? Php при safe-mode проверяет.
А Apache не может "утянуть" скрипт, он его может выполнить, что он и так постоянно делает. Для этого
по линкам ходить не обязательно.
 

ClayRabbit

Guest
Причем тут Apache?
А я говорю про Апач а не про ПХП, если вы не заметили :)
А Apache не может "утянуть" скрипт
Да что вы говорите? :) В том и дело, что в большинстве случаев - запросто. Достаточно "RemoveType php" прописать в .htaccess
Так что, -FollowSymLinks +SymLinksIfOwnerMatch

dl() в любом случае запрещать надо...
При safe_mode она и так отключена, кстати.
 

ClayRabbit

Guest
.htaccess - на своем, а симлинк - на чужой каталог
 

AndreyS

Guest
У меня не получается. Что я неправильно делаю ? :)
 

ClayRabbit

Guest
а я-то откуда знаю :)
Еще надежнее - сделать симлинк не на папку, а сразу на файл
 

AndreyS

Guest
А может быть вот это мешает ?

FollowSymLinks
The server will follow symbolic links in this directory.
Note: even though the server follows the symlink it does not change the pathname used to match against <Directory> sections.
 

ClayRabbit

Guest
Чем мешает? Как раз-таки FollowSymLinks не мешает, а позволяет. А помешать может только SymLinksIfOwnerMatch, для того он и придуман...
 

AndreyS

Guest
Мешает тем, что не изменяет путь работы директивы <Directory> ( и соответственно
.htaccess ) от корня / при merge установок по всему пути.

А FollowSymLinks дает возможность обращаться к файлам и директориям, но не менять установки для них.
 

ClayRabbit

Guest
Простите, я не совсем понимаю вас :)
Давайте забудем про .htaccess (Можно и без него :)
Выполните "ln -s /путь/к/чужому/файлу/config.php readme.txt"
(Естественно на config.php должны стоять права 644, например.)
И откройте readme.txt браузером c вашего сайта :)
 

nordeep

Guest
Хотелось бы узнать мнение по эти решениям:
http://www.suphp.org/
http://malik.elcat.kg/apache-suexec-php.shtml
http://www.pookey.co.uk/php-security.xml
совместно с open_basedir
что лутше, что хуже ?
 

Vasily

Guest
safe_mode - не решение проблем

Вот вы всё говорите о том, как PHP запретить выходить за пределы homedir, но есть же ещё cgi скрипты.
По моему единственное правильное решение безопасности, это php-suexec патч для apache. И права доступа на чтение "важных" файлов только для uid/gid пользователя.

Поправьте, если я не прав.
 

anight

Новичок
По моему единственное правильное решение безопасности, это php-suexec патч для apache. И права доступа на чтение "важных" файлов только для uid/gid пользователя.

Поправьте, если я не прав.
Поправляю - не единственное.
Проще и правильнее (imho) использовать apache2 + mod_fastcgi remote. MPM - perchild и кол-во запущенных apache для каждого VH должно совпадать с кол-вом запущенных php-fastcgi (разумеется с тем же uid/gid).
 
Сверху