Просмотр полной версии : Возможные уязвимости хостеров. Apache.
Егорыч+++
22.06.2005, 19:03
Тема, которая довольно интересна.
99% хостеров работают на основе Apache. К сожалению у апача в плане безопасности много недостатков, воспользоваться которыми может взломщик.
Потенциальные уязвимости:
1) Возможность просмотреть, кто хостится на вашем сервере(или не вашем).
2) Возможность соседа забраться ваш ваш файл у которого права 755.
3) Непонятно зачем нужный режим php - SafeMode.
4) Возможность обхода mod_security или модулей, которые следят за безопасностью.
5) Чтение логов. Заранее понятная структура папок.
и т д.
Постепенно введу в курс дела. Если есть у кого, что добавить сейчас пишите тут.
__________________
http://antichat.ru/pic/inf.jpg
Редактировать/Удалить сообщение
(1) и (2)
хм, я бы не сказал, что это недостатки, это обычное разграничение прав
(3)
это вообще не при чем :)
(5)
А это достоинство ;)
Егорыч+++
22.06.2005, 21:54
Хорошо. Собственно это сворее недостатки. Лукавство хостингов, о чем они не говорят.
Например.
по 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:1000:pes75:/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:1000:plsamara:/pub/home/plsamara:/usr/local/bin/bash eyeinst1:*:2393:1000:eyeinst1:/pub/home/eyeinst1:/usr/local/bin/bash proton29:*:2395:1000:proton29:/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:8081:Petr 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:3312:Pavel Storozhev:/home/stor:/bin/tcsh staff799:*:1098:1000:staff799:/pub/home/staff799:/usr/local/bin/bash orendom8:*:1101:1000:orendom8:/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 акаунтов на другие папки, но никто не говорит о том, что если залить шел то доступ будет получен на весь сайт, поскольку права естественно одинаковые.
Егорыч+++
23.06.2005, 17:59
Пункт 3)
Многие хостеры ограничивают пользователя запуская PHP к Safemode. Этот режим как бы делает безопасным работу php, но никак не безопасную работу для сервера хостера. Поэтому если у вам не получается полазить по серверу с помощью PHP, вы можете это попробовать сделать с помощью Perl. Вполне возможно, что хостер что нибудь забыл.
Егорыч+++
24.06.2005, 13:47
4) Возможность обхода mod_security
В общем модуль обходится вообще без проблемм. Да он фильтрует GET и POST переменные, да и вообще еще довольно много параметров, но этот модуль не в состоянии отследить простую вещь.
<?
echo system("cat /etc/passwd");
?>
system() при SafeMode не работает :) :)
Егорыч+++
24.06.2005, 14:12
Ну есть еще и перл...
Егорыч+++
24.06.2005, 15:36
Кстати есть один прикол я так. Есть хостер 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
он типа проверяет права файла и юзера на соответствие ;)
маразматично
Егорыч+++
24.06.2005, 15:56
>В чем тогда смысл этого сейф моде я не лично вообще не понимаю.
в нескольких фишках типа 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 к апачу не относится, это фича пхп
Защищенный режим в 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 не зависит от того, используется Защищенный режим или нет.
Есть хостер masterhost. По умолчанию все клиенты у него находятся в php - Safemode. И в тоже время ими же предлагается "Если вам это не нравится можете поставить свой Php". Делается там это довольно просто. И естественно PHP будет работать без Safemode. В чем тогда смысл этого сейф моде я не лично вообще не понимаю.Вот смотри,мне не нужно выключение сейф мода,естественно дабы не нажить геморой я не буду "ставить свой Php" в итоге-кому нужно отключения сейф моде те его сделают,а кому не нужно-те усложняют жизнь хакерам,а себе нисколько..
Кстати есть один прикол я так
Я прикола не вижу...
system() при SafeMode не работает :) :)Если не ошибаюсь то можно использовать passthru...Или я ошибаюсь???
Егорыч+++
24.06.2005, 17:33
Да я знаю, что safe_mode относится к php. Я просто подумал что параметры прописанные в httpd.conf каким то образом будут перекрывать параметры своего php.
Да и сейф моде усложняет не жизнь хакерам, а пользователям. В любом случае наличие политики отключения safe_mode ничего в безопасность сервера , да и клиента не вносит
Хочется ещё добавить, что потенциальной уязвимостью многих хостеров является
значение allow_url_fopen, выставленное в on в настройках PHP, что делает возможным удалённый php-Инклюдинг при наличии бажного скрипта.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot