dle.in.ua » Баги » Защита папок скрипта от запуска сторонних скриптов

Защита папок скрипта от запуска сторонних скриптов

Автор: Baggio от 26-10-2010, 16:26
Дорогие друзья,

в этой небольшой статье мы хотим рассказать вам о том как, как вам можно повысить безопасность вашего сайта. Как известно наибольшую угрозу для сайта представляют собой залитые злоумышленником на сервер PHP шеллы. Что это такое? Это PHP скрипты которые могут выполняться на вашем сервере, соответственно производить какие-либо изменения в файлах доступных для записи или могут, например читать содержимое конфигурационных данных и соответственно получать прямой доступ к базе данных. Каким образом могут попадать данные шеллы на ваш сервер? При обнаружении какой либо уязвимости в скрипте, или сторонних модулях, или вообще при наличии других уязвимых сторонних скриптов на сервере, или серверного ПО. Главная особенность заключается в том, что шеллы можно залить не в любые папки на сервере, а лишь в папки доступные для записи на сервере, и в DataLife Engine такими папками являются папки /uploads/ и /templates/, а также все вложенные в них папки. Данные папки должны иметь права на запись, т.к. вы в них заливаете посредством скрипта легальный контент, файлы, картинки, редактируете в админпанели шаблоны и прочее. И как правило в эти папки производится загрузка шеллов при обнаружении злоумышленником какой либо бреши на сервере в любом скрипте, даже не имеющем отношения к DataLife Engine. Можно ли защитить эти папки, в случае попадания в них зловредного PHP файла, ведь нельзя запретить доступ к этим папкам? Можно, и достаточно не сложно.

Итак, вам необходимо разместить в папках /uploads/ и /templates/ файл .htaccess со следующим содержимым:
php_flag engine  off

Данная строчка отключает использование PHP интерпретатора при попытке обращения к PHP файлам находящимся в этих папках, а также находящимся во всех вложенных папках. Поэтому даже в случае заливки в эти папки файлов со зловредным PHP кодом, они становятся для злоумышленника совершенно бесполезными, т.к. попросту не будут запускаться и выполнятся сервером.

К сожалению далеко не все хостинг провайдеры позволяют управлять через .htaccess данным параметром, но для таких сайтов решение также существует, поэтому если на вашем сервере не работает вышеуказанный способ, то разместите в этих же папках .htaccess с содержимым:
<FilesMatch "\.(php|php3|php4|php5|php6|phtml|phps)$|^$">
   Order allow,deny
   Deny from all
</FilesMatch>

Данный код запрещает прямое обращение к PHP файлам, находящимся в этих папках.

Вот собственно и все, эти несложные манипуляции позволят серьезно повысить безопасность вашего сайта, даже в случае если найдется серьезная уязвимость в сторонних модулях и скриптах.
  • Группа: User
  • Icq: --
  • Комментариев: 27
  • Публикаций: 0
  • Спасибо за информацию.
    • sgw2006
    • Регистрация: 20.03.2010
    • Репутация: (0|0|0)
    • 27 октября 2010 11:34
    • 1
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 9
  • Публикаций: 2
  • Спасібо
    • xcash
    • Регистрация: 28.03.2010
    • Репутация: (0|0|0)
    • 27 октября 2010 13:25
    • 2
    ^
  • Группа: Модератор +
  • Icq: --
  • Комментариев: 191
  • Публикаций: 14
  • Целка как всегда в своём духе... Видимо наконец прочитала документацию по .htaccess...

    Старо как мир... Вот только никто это не использует, в том числе целка. Такие вещи нужно не объяснять, а включать в релизы...

    Вот только целка, как всегда, подумала только о своём сервере, а о отличии настроек на других серверах думать не надо... Если у Вас PHP как CGI/FastCGI, то php_flag engine off - выдаст 500 ошибку... (номер может отличаться в зависимости от прямоты рук админа).

    Так что не забудьте уточнить у своего хостера, не вызовит ли это ошибок и как это сделать так, чтобы избежать ошибок.

    --------------------
    ^
  • Группа: User
  • Icq: 568735815
  • Комментариев: 12
  • Публикаций: 0
  • Горбушка,
    поможет ли статья где-то читал что нет все равно шелл проскочит :::???
    • Seka-93
    • Регистрация: 21.01.2010
    • Репутация: (0|0|0)
    • 29 октября 2010 09:23
    • 4
    ^
  • Группа: Модератор +
  • Icq: --
  • Комментариев: 191
  • Публикаций: 14
  • Не поможет она... Она защищает только папки, а если залить в корень - шел прекрасно будет себя чувствовать. Совмещайте с http://4дле.ru/bugs/1147159010-predotvrashhenie-zalivki-shella-v2-php.html

    Да, отчасти, она закрывает возможные уязвимости. Но глобально - не спасёт.

    Хотите защиту? Начните с прав на файлы и папки. CHMOD 401 обычно хватает для работы сайта, но не хватает для заливки и работы шелов. Собственно, если Вашему соседу зальют шел, зная путь до Вас можно спокойно залить его и к Вам... Права 401 (если PHP как модуль Apache 400) - никто этого сделать не сможет...

    Я давно не вникал в эти тонкости, если интересно - могу покапаться на сервере, и сказать, при каких правах всё будет работать (правда у меня не DLE, но и на он должен пахать).

    Я свой сайт защитил элементарно: все файлы PHP имеют расширение не .php, а .qwerty (реальное я не назову), после чего в конфиге PHP сменил расширения файлов (в теории можно делать через htaccess - на .php вешаем тип TXT, а на .qwerty - PHP)... Так что файлы .php мне лить на сервер - бесполезное занятие. index.php у меня так же не сужествует, его видимость создана через ЧПУ... CMS самописная - реальнуе пути скрыты. Так что ломать это будет очень сложно. MySQL так же защищён по хосту и с других хостов (доменов) включая localhost не пустит. Это защита... А все хаки для DLE - это так, элюзия... Хотя, от нубов защищает даже фраза в копирайте "сервер защищён ФСБ"...

    От установки этих хаков хуже уж точно не станет. Станет ли лучше - по идеи должно. Но опять таки, корень сайта остаётся незащищённым. Совет прост - ставьте этот хак + CHMOD с запретом писать в корень сайта (в папку, где лежит index.php). Должно реально защитить.

    P.s. если кто-то оценил информацию и хочет скопировать - незабывайте указывать автора. Ссылка на меня не требуется, достаточно просто указать имя: Горбушка.

    --------------------
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Написал ты много. Но твоё сочинение это полный бред. wink
    • lockon
    • Регистрация: --
    • Репутация: (||)
    • 30 октября 2010 13:15
    • 6
    ^
  • Группа: Модератор +
  • Icq: --
  • Комментариев: 191
  • Публикаций: 14
  • Конкретнее, пожалуйста... Какую строчку считаете бредом и почему?

    Что, не знаешь, что зная абсолютный путь можно править файлы другого пользователя на хостинге? Обрадую, можно... Не на любом, но некоторых так делал. CHMOD - это защита от действий всех, кроме тебя...

    Про защита моей CMS - ломай... Когда пути то не знает и тип файлов... Могу прям сейчас залить твой шел в формате PHP - ты его увидишь как TXT-файл...

    Что ты ещё считаешь бредом?

    --------------------
    ^
  • Группа: User
  • Icq: 373624275
  • Комментариев: 71
  • Публикаций: 0
  • Совет прост - ставьте этот хак + CHMOD с запретом писать в корень сайта (в папку, где лежит index.php). Должно реально защитить.

    Горбушка а какой конкретно СМОD надо ставить? цифрами если можно плиз !!!
    php_flag engine off, а че делать что бы не выдало. 7

    --------------------
    • lika004
    • Регистрация: 13.02.2010
    • Репутация: (0|0|0)
    • 31 октября 2010 15:40
    • 8
    ^
  • Группа: Модератор +
  • Icq: --
  • Комментариев: 191
  • Публикаций: 14
  • lika004, если php_flag engine off выдаёт ошибку (обычно 500/501) - то у Вас PHP работает как CGI. В этом случае пользуемся вторым кодом - который запрещает прямой доступ к PHP-файлам.

    Узнать режим работы PHP просто - phpinfo(); - в нём мы ищем Server API.
    Server API Apache 2.0 Handler

    Server API CGI/FastCGI

    Для чтения.
    Режим мода апач:
    Файлы - 404, папки - 501
    Для режима CGI/FastCGI:
    Файлы 400, папки 500

    Для записи.
    Режим мода апач:
    Файлы - 604, папки - 701
    Для режима CGI/FastCGI:
    Файлы 600, папки 700

    ИНОГДА! Для режима CGI/FastCGI требуются права 501/701 на папки! Почему - пока не нашёл, но на одном из моих серверов такой баг присутствует - 99% что баг мой...

    Почему нужны такие права?
    В режиме CGI всё просто - PHP исполняется от имени владельца домена, он же - владелец папков. Следовательно всех остальных мы можем слать куда подальше (права 0)
    В режиме Мод Апач всё немного хуже - PHP исполняется от имени пользователя WWW (как правило), поэтому нам требуется дать ему права на чтения, а не только себе... Отсюда даём ему права ИСПОЛНЯТЬ папки (т.е. входить в них), но не даём ему чтение (листинг) папок, ибо апачу это не нужно. С файлами даём права только на чтение.

    Запись - это +200 к правам...

    P.s. вторая цифра всегда ноль. Это права на группу владельца. В группе владельца файла на хостинге, обычно, находится только сам пользователь => прав группе давать не требуется - ставим всегда ноль.

    Вот и всё - с такими правами шанс на взлом многократно уменьшаются... В режиме Апач Вы защищаетесь от записи туда, куда это не планируется, а в режиме CGI ещё и от посторонних глаз - соседий.

    P.p.s. Проверьте мну кто-нить... Писал по памяти...

    --------------------
    ^
  • Группа: User
  • Icq: 8853941
  • Комментариев: 85
  • Публикаций: 9
  • bi Какие-то 3 слова, говорят хакеру пи%уй от сюда
    • userfound
    • Регистрация: 24.10.2009
    • Репутация: (0|0|0)
    • 8 февраля 2011 00:00
    • 10
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.