Назад | Перейти на главную страницу

код, введенный в файл PHP с разрешением 777

Проснувшись, я обнаружил, что во всех папках моего общего веб-хоста с разрешением 777 было два новых файла php. Не удалось прочитать код внутри файла - вот декодированная версия: http://pastie.org/779226 (что за ...?) Этот код был внедрен даже в некоторые файлы PHP.

Я не понимаю, КАК кто-то мог бы это сделать? Я знаю, что иметь разрешение 777 - не самая лучшая вещь, но как они вообще попали в мою систему папок.

Я просто программист на стороне клиента, было бы здорово, если бы у меня был совет, как этого избежать в будущем.

Ура.

Вот деобфусцированная версия скрипта: http://pastie.org/private/iobgt7aetg8mezoepucsg

Код, кажется, включает внешний PHP-код с другого веб-сайта и собирает при этом информацию о ваших посетителях.

Это могло произойти, например, если вы разрешаете загрузку файлов в каталог, доступный извне. Выполнение этого без надлежащей проверки опасно, так как злоумышленник может загрузить файл PHP (используя загрузку вашего изображения) с вредоносным кодом. Если веб-сервер настроен неправильно, код будет запущен по запросу.

Чтобы избежать подобных проблем, убедитесь, что:

  • Процессы PHP выполняются ограниченным пользователем.
  • Файлы, которые не нужно редактировать, настроены для записи только владельцем (0644 или 0744 в зависимости от того, требуется ли вам бит выполнения или нет).
  • Установите только каталог загрузки для записи.
  • Попробуйте использовать каталог для загрузки, который находится за пределами вашего корневого веб-сайта. Затем используйте readfile() для обслуживания файла.
  • Проверьте файлы. Если вы хотите, чтобы ваша форма разрешала только изображения, проверьте волшебные биты и убедитесь, что изображение действительно. Это очень упущенный шаг. То же самое относится к любому другому формату. Не полагайтесь на расширение файла или тип mime, отправленный клиентом. Проверьте фактическое содержимое файла.

Я могу придумать как минимум две возможности:

  1. Они нашли ваш пароль FTP
  2. Они нашли недостаток в вашем программном обеспечении PHP

Чтобы их не допустить:

  1. Используйте сложный пароль (минимум 9 символов, смешанный регистр, цифры и специальные символы)
  2. Беги от 777, как будто это число зверя; попробуйте дать веб-серверу больше не надо чем права на чтение ваших скриптов, и дать специальные разрешения для (надеюсь, редких) папок / файлов, в которые он должен писать.

Если у вас есть доступ к некоторым журналам (журналам доступа из Apache и журналам FTP с любого FTP-сервера, запущенного на вашем веб-сайте), это может оказаться полезным, чтобы увидеть, что произошло.

Сомнительно, что им удалось сделать так много изменений с помощью простого изъяна в ваших скриптах, если только это не действительно широко открытый недостаток (например, у вас есть незащищенный скрипт, который только обертывает fopen () над всем, что нравится пользователю), поэтому я бы проверил журнал FTP в приоритете.