Возможные уязвимости хостеров. Apache.

Discussion in 'Безопасность и Анонимность' started by Егорыч+++, 22 Jun 2005.

  1. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    Тема, которая довольно интересна.

    99% хостеров работают на основе Apache. К сожалению у апача в плане безопасности много недостатков, воспользоваться которыми может взломщик.

    Потенциальные уязвимости:

    1) Возможность просмотреть, кто хостится на вашем сервере(или не вашем).

    2) Возможность соседа забраться ваш ваш файл у которого права 755.

    3) Непонятно зачем нужный режим php - SafeMode.

    4) Возможность обхода mod_security или модулей, которые следят за безопасностью.

    5) Чтение логов. Заранее понятная структура папок.

    и т д.

    Постепенно введу в курс дела. Если есть у кого, что добавить сейчас пишите тут.
    __________________
    http://antichat.ru/pic/inf.jpg
    Редактировать/Удалить сообщение
     
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    (1) и (2)
    хм, я бы не сказал, что это недостатки, это обычное разграничение прав

    (3)
    это вообще не при чем :)

    (5)
    А это достоинство ;)
     
  3. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    Хорошо. Собственно это сворее недостатки. Лукавство хостингов, о чем они не говорят.

    Например.
    по 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:eek:rendom8:/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 акаунтов на другие папки, но никто не говорит о том, что если залить шел то доступ будет получен на весь сайт, поскольку права естественно одинаковые.
     
  4. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    Пункт 3)

    Многие хостеры ограничивают пользователя запуская PHP к Safemode. Этот режим как бы делает безопасным работу php, но никак не безопасную работу для сервера хостера. Поэтому если у вам не получается полазить по серверу с помощью PHP, вы можете это попробовать сделать с помощью Perl. Вполне возможно, что хостер что нибудь забыл.
     
  5. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    4) Возможность обхода mod_security

    В общем модуль обходится вообще без проблемм. Да он фильтрует GET и POST переменные, да и вообще еще довольно много параметров, но этот модуль не в состоянии отследить простую вещь.

    <?
    echo system("cat /etc/passwd");
    ?>
     
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    system() при SafeMode не работает :) :)
     
  7. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    Ну есть еще и перл...
     
  8. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    Кстати есть один прикол я так. Есть хостер masterhost. По умолчанию все клиенты у него находятся в php - Safemode. И в тоже время ими же предлагается "Если вам это не нравится можете поставить свой Php". Делается там это довольно просто. И естественно PHP будет работать без Safemode. В чем тогда смысл этого сейф моде я не лично вообще не понимаю.
     
  9. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    >В чем тогда смысл этого сейф моде я не лично вообще не понимаю.
    в нескольких фишках типа safe_mode_allowed_env_vars, safe_mode_protected_env_vars, safe_mode_exec_dir, safe_mode_include_dir, safe_mode_gid

    он типа проверяет права файла и юзера на соответствие ;)

    маразматично
     
  10. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    А ну да кажется понял. Типо при установке своего php начинают работать типа system, exec но в тоже время в апаче действуют переменные safe_mode
     
  11. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    не =)

    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 не зависит от того, используется Защищенный режим или нет.
    
     
  12. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Вот смотри,мне не нужно выключение сейф мода,естественно дабы не нажить геморой я не буду "ставить свой Php" в итоге-кому нужно отключения сейф моде те его сделают,а кому не нужно-те усложняют жизнь хакерам,а себе нисколько..
    Я прикола не вижу...
     
  13. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Если не ошибаюсь то можно использовать passthru...Или я ошибаюсь???
     
  14. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    qBiN, ошибаешься
     
  15. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    895
    Reputations:
    20
    Да я знаю, что safe_mode относится к php. Я просто подумал что параметры прописанные в httpd.conf каким то образом будут перекрывать параметры своего php.

    Да и сейф моде усложняет не жизнь хакерам, а пользователям. В любом случае наличие политики отключения safe_mode ничего в безопасность сервера , да и клиента не вносит
     
  16. kir0k

    kir0k New Member

    Joined:
    24 Jul 2005
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Хочется ещё добавить, что потенциальной уязвимостью многих хостеров является
    значение allow_url_fopen, выставленное в on в настройках PHP, что делает возможным удалённый php-Инклюдинг при наличии бажного скрипта.
     
    #16 kir0k, 24 Jul 2005
    Last edited: 24 Jul 2005