Тема, которая довольно интересна. 99% хостеров работают на основе Apache. К сожалению у апача в плане безопасности много недостатков, воспользоваться которыми может взломщик. Потенциальные уязвимости: 1) Возможность просмотреть, кто хостится на вашем сервере(или не вашем). 2) Возможность соседа забраться ваш ваш файл у которого права 755. 3) Непонятно зачем нужный режим php - SafeMode. 4) Возможность обхода mod_security или модулей, которые следят за безопасностью. 5) Чтение логов. Заранее понятная структура папок. и т д. Постепенно введу в курс дела. Если есть у кого, что добавить сейчас пишите тут. __________________ http://antichat.ru/pic/inf.jpg Редактировать/Удалить сообщение
(1) и (2) хм, я бы не сказал, что это недостатки, это обычное разграничение прав (3) это вообще не при чем (5) А это достоинство
Хорошо. Собственно это сворее недостатки. Лукавство хостингов, о чем они не говорят. Например. по 1) На многих хостингах можно получить список акаунтов просто командой cat /etc/passwd. Для примера валуехост. Вот часть файла. vispar95:*:2370:1000:vispar95:/pub/home/vispar95:/usr/local/bin/bash narina:*:2372:1000:narina:/pub/home/narina:/usr/local/bin/bash betaneli:*:2377:1000:betaneli:/pub/home/betaneli:/usr/local/bin/bash cmo144:*:2378:1000:cmo144:/pub/home/cmo144:/usr/local/bin/bash ark53:*:2379:1000:ark53:/pub/home/ark53:/usr/local/bin/bash jaluzi90:*:2380:1000:jaluzi90:/pub/home/jaluzi90:/usr/local/bin/bash dvision:*:2383:1000:dvision:/pub/home/dvision:/usr/local/bin/bash pes75:*:2384:1000es75:/pub/home/pes75:/usr/local/bin/bash fbgroup5:*:2386:1000:fbgroup5:/pub/home/fbgroup5:/usr/local/bin/bash zabor76:*:2391:1000:zabor76:/pub/home/zabor76:/usr/local/bin/bash plsamara:*:2392:1000lsamara:/pub/home/plsamara:/usr/local/bin/bash eyeinst1:*:2393:1000:eyeinst1:/pub/home/eyeinst1:/usr/local/bin/bash proton29:*:2395:1000roton29:/pub/home/proton29:/usr/local/bin/bash flexi42:*:2396:1000:flexi42:/pub/home/flexi42:/usr/local/bin/bash august68:*:2397:1000:august68:/pub/home/august68:/usr/local/bin/bash babsley2:*:2403:1000:babsley2:/pub/home/babsley2:/usr/local/bin/bash demark61:*:1001:1000:demark61:/pub/home/demark61:/usr/local/bin/bash lens62:*:1002:1000:lens62:/pub/home/lens62:/usr/local/bin/bash ppb:*:3307:8081etr Pokryshev:/home/ppb:/usr/local/bin/bash ecogermet:*:1008:1000:ecogermet:/pub/home/ecogermet:/usr/local/bin/bash batuto:*:3308:3308:Yan Batuto:/home/batuto:/sbin/nologin skspad:*:1019:1000:skspad:/pub/home/skspad:/usr/local/bin/bash leokan:*:1005:1000:leokan:/pub/home/leokan:/usr/local/bin/bash nreal72:*:1034:1000:nreal72:/pub/home/nreal72:/usr/local/bin/bash lifearmy:*:1036:1000:lifearmy:/pub/home/lifearmy:/usr/local/bin/bash bystrov:*:1039:1000:bystrov:/pub/home/bystrov:/usr/local/bin/bash cheget76:*:1042:1000:cheget76:/pub/home/cheget76:/usr/local/bin/bash balta110:*:1045:1000:balta110:/pub/home/balta110:/usr/local/bin/bash rbmspa69:*:1053:1000:rbmspa69:/pub/home/rbmspa69:/usr/local/bin/bash zaur66:*:1059:1000:zaur66:/pub/home/zaur66:/usr/local/bin/bash max:*:3311:3311:Maxim Sergeev:/home/max:/usr/local/bin/bash mirraya9:*:1065:1000:mirraya9:/pub/home/mirraya9:/usr/local/bin/bash mbaclub:*:1073:1000:mbaclub:/pub/home/mbaclub:/usr/local/bin/bash ggau85:*:1033:1000:ggau85:/pub/home/ggau85:/usr/local/bin/bash gax67:*:1081:1000:gax67:/pub/home/gax67:/usr/local/bin/bash lifearmy:*:1093:1000:lifearmy:/pub/home/lifearmy:/usr/local/bin/bash stor:*:3312:3312avel Storozhev:/home/stor:/bin/tcsh staff799:*:1098:1000:staff799:/pub/home/staff799:/usr/local/bin/bash orendom8:*:1101:1000rendom8:/pub/home/orendom8:/usr/local/bin/bash snd:*:3313:3313:Sergey Daniloff:/home/snd:/sbin/nologin titeleco:*:1111:1000:titeleco:/pub/home/titeleco:/usr/local/bin/bash strong:*:1133:1000:strong:/pub/home/strong:/usr/local/bin/bash labreact:*:1004:1000:labreact:/pub/home/labreact:/usr/local/bin/bash kabanov:*:1007:1000:kabanov:/pub/home/kabanov:/usr/local/bin/bash mgorod:*:1020:1000:mgorod:/pub/home/mgorod:/usr/local/bin/bash Подобная информация дает преимущество взломщику, при установке местоположения фалов сайтов сервера. У некоторых хостеров можно путешествовать по серверу как у себя дома, изучая его устройство. Также почти все хостинги предлагают возможность создания дополнительных ftp акаунтов на другие папки, но никто не говорит о том, что если залить шел то доступ будет получен на весь сайт, поскольку права естественно одинаковые.
Пункт 3) Многие хостеры ограничивают пользователя запуская PHP к Safemode. Этот режим как бы делает безопасным работу php, но никак не безопасную работу для сервера хостера. Поэтому если у вам не получается полазить по серверу с помощью PHP, вы можете это попробовать сделать с помощью Perl. Вполне возможно, что хостер что нибудь забыл.
4) Возможность обхода mod_security В общем модуль обходится вообще без проблемм. Да он фильтрует GET и POST переменные, да и вообще еще довольно много параметров, но этот модуль не в состоянии отследить простую вещь. <? echo system("cat /etc/passwd"); ?>
Кстати есть один прикол я так. Есть хостер masterhost. По умолчанию все клиенты у него находятся в php - Safemode. И в тоже время ими же предлагается "Если вам это не нравится можете поставить свой Php". Делается там это довольно просто. И естественно PHP будет работать без Safemode. В чем тогда смысл этого сейф моде я не лично вообще не понимаю.
>В чем тогда смысл этого сейф моде я не лично вообще не понимаю. в нескольких фишках типа safe_mode_allowed_env_vars, safe_mode_protected_env_vars, safe_mode_exec_dir, safe_mode_include_dir, safe_mode_gid он типа проверяет права файла и юзера на соответствие маразматично
А ну да кажется понял. Типо при установке своего php начинают работать типа system, exec но в тоже время в апаче действуют переменные safe_mode
не =) safe_mode к апачу не относится, это фича пхп Code: Защищенный режим в PHP - это попытка решить проблему безопасности на совместно используемых серверах. Несмотря на то, что концептуально неверно решать эту проблему на уровне PHP, но поскольку альтернативы уровня веб-сервера или операционной системы на сегодняшний день отсутствуют, многие пользователи, особенно провайдеры, используют именно защищенный режим. Краткое разъяснение конфигурационных директив. safe_mode Включает/отключает защищенный режим в PHP. По умолчанию в защищенном режиме при открытии файла выполняется проверка значения UID. Для того, чтобы немного смягчить это условие и выполнять проверку GID, необходимо установить значение on для флага safe_mode_gid. Определяет, использовать или нет проверку UID (FALSE) или GID (TRUE) проверку при обращении к файлу. safe_mode_include_dir При подключении файлов, расположенных в указанной директории и всех ее подкаталогах, проверка на соответствие значений UID/GID не выполняется (В случае, если установленная директория не указана в include_path, необходимо указывать полный путь при включении). Начиная с PHP 4.2.0 значением этой директивы может быть список каталогов, разделенных двоеточием (точкой с запятой на windows-системах), что аналогично синтаксису include_path. Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись "safe_mode_include_dir = /dir/incl" позволяет подключать файлы, находящиеся в директориях "/dir/include" и "/dir/incls", в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например: "safe_mode_include_dir = /dir/incl/". safe_mode_exec_dir В случае, когда PHP работает в защищенном режиме, system() и другие функции для выполнения системных команд и программ отклоняют выполнение программ, находящихся вне данной директории. safe_mode_allowed_env_vars Возможность устанавливать переменные окружения - потенциальная брешь в безопасности. Значением этой директивы является список префиксов, разделенных двоеточиями. В защищенном режиме пользователь может модифицировать только те переменные окружения, имена которых начинаются с одного из указанных префиксов. По умолчанию, пользователю доступны переменные, которые начинаются с префикса PHP_ (например, PHP_FOO=BAR). Замечание: В случае, если этой директиве указать пустое значение, пользователь получит возможность модифицировать любую переменную окружения! safe_mode_protected_env_vars Эта директива содержит список переменных окружения, разделенных двоеточием, значение которых пользователь не сможет изменить, используя функцию putenv(). Значения этих переменных остаются защищенными, даже если их модификация разрешена директивой safe_mode_allowed_env_vars. open_basedir Ограничивает список файлов, которые могут быть открыты в PHP, указанным деревом директорий независимо от того, используется защищенный режим или нет. Каждый раз, когда скрипт пытается открыть файл, например, при помощи функции fopen() или gzopen(), проверяется месторасположение файла. В случае, если он находится вне указанного дерева директорий, PHP отказывает в открытия файла. Все символические ссылки распознаются и преобразуются, поэтому обойти это ограничение при помощи символических ссылок невозможно. Специальное значение . указывает, что базовой следует считать директорию, в которой расположен сам скрипт. В этом случае следует быть осторожным, так как рабочую директорию скрипта можно легко изменить при помощи функции chdir(). Опция open_basedir может быть отключена в конфигурационном файле httpd.conf (например, для некоторых виртуальных хостов) точно таким же образом как и любая другая директива: "php_admin_value open_basedir none". Для Windows-систем разделителем списка директорий служит точка с запятой. Для всех других операционных систем в качестве разделителя используется двоеточие. В случае, если PHP работает как модуль веб-сервера Apache, все указания open_basedir для родительских директорий наследуются. Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись "safe_mode_include_dir = /dir/incl" позволяет открывать файлы, находящиеся в директориях "/dir/include" и "/dir/incls", в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например: "safe_mode_include_dir = /dir/incl/". По умолчанию разрешен доступ ко всем файлам. disable_functions Эта директива позволяет вам запретить некоторые функции из соображений безопасности. В качестве значения она принимает список функций, разделенных двоеточием. disable_functions не зависит от того, используется Защищенный режим или нет. disable_classes Эта директива позволяет вам запретить некоторые классы из соображений безопасности. В качестве значения она принимает список класов, разделенных двоеточием. disable_classes не зависит от того, используется Защищенный режим или нет.
Вот смотри,мне не нужно выключение сейф мода,естественно дабы не нажить геморой я не буду "ставить свой Php" в итоге-кому нужно отключения сейф моде те его сделают,а кому не нужно-те усложняют жизнь хакерам,а себе нисколько.. Я прикола не вижу...
Да я знаю, что safe_mode относится к php. Я просто подумал что параметры прописанные в httpd.conf каким то образом будут перекрывать параметры своего php. Да и сейф моде усложняет не жизнь хакерам, а пользователям. В любом случае наличие политики отключения safe_mode ничего в безопасность сервера , да и клиента не вносит
Хочется ещё добавить, что потенциальной уязвимостью многих хостеров является значение allow_url_fopen, выставленное в on в настройках PHP, что делает возможным удалённый php-Инклюдинг при наличии бажного скрипта.