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

Взлом PHP eval (gzinflate (base64_decode (..))) - как предотвратить его повторение?

Недавно у нас был взломан веб-сайт, где в файл index.php был вставлен PHP-код, который выглядел примерно так:

eval (gzinflate (base64_decode ('s127ezsS / ... bA236UA1')));

Код приводил к включению другого php-файла (cnfg.php), что вызывало отображение спама, связанного с фармацевтическими препаратами (но видимого только для googlebot и др.). Это похоже на фарм-хак для wordpress, за исключением того, что мы не используем указанное программное обеспечение. С тех пор код был удален, но я бы хотел, чтобы такие случаи не повторялись в будущем.

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

Какие есть потенциальные дыры в безопасности, которые позволят загружать эти файлы php? И что я могу сделать, чтобы этого не случилось в будущем?

Ура

Просто предупреждение.

Если вы используете FileZilla в качестве FTP-клиента, существует вредоносная программа, которая захватывает ваши учетные данные FTP из ОБЫЧНОГО ТЕКСТОВОГО ФАЙЛА Filezilla (ура!) И использует эту информацию для вставки этого вредоносного кода (обозначенного кодом типа # b58b6f # вокруг команды "gzinflate (base64_decode)". Так ваши файлы будут атакованы / скомпрометированы.

Загляните в папку% APPDATA% / Roaming / Filezilla. Один из XML-файлов содержит все ваши учетные данные FTP-сайта (пользователь / пароль / и т. Д.) В ОБЫЧНОМ ТЕКСТЕ! И люди FileZilla отказываются исправлять эту очевидную дыру в безопасности.

Моя рекомендация: удалите FileZilla со своего компьютера (и вам придется вручную удалить папку в папке APPDATA).

Если вам нужен безопасный FTP-клиент, используйте WinSCP (www .winscp .net), где вы можете установить мастер-пароль, и все учетные данные вашего сайта будут зашифрованы.

Просто предупреждение .... Рик ... Дж.

Вам нужно выяснить, как это произошло.

  • Был ли у злоумышленника доступ к файловой системе через sftp / scp?
    • Если это произошло, вам необходимо заблокировать методы удаленного доступа.
  • Использовал ли злоумышленник скрипт загрузки или ошибку в существующем скрипте, которая позволяла ему изменять файлы?
    • Исправьте сценарий, измените разрешения для своих сценариев и веб-содержимого, чтобы процесс веб-сервера не мог их изменить. Веб-сервер должен быть ограничен изменением файлов где-нибудь в каталоге данных. Ваши скрипты и файлы, как правило, не должны принадлежать веб-серверу или быть доступными для записи.
  • Был ли сценарий частью неустановленного вами вредоносного ПО?
    • Я видел такие вещи как часть шаблонов WordPress. Ничего не подозревающий пользователь скачал шаблоны с какого-то случайного сайта. Эти шаблоны включают функцию для запуска кода с внешнего веб-сервера. Это в сочетании с плохими настройками разрешений позволило злоумышленнику изменить другие вещи.

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

Я испытал подобный взлом, и он был идентифицирован как загруженный сторонним расширением Joomla, которое позволяет загружать файлы по FTP.

В моем случае я удалил расширение Joomla и сказал веб-разработчику не устанавливать его снова.

В зависимости от ваших обстоятельств вы можете отключить eval, base64_decode и gzinflate.

Вы можете сделать это в php.ini, ища строку

disable_functions = 

и установите его на

disable_functions = eval, base64_decode, gzinflate

Вам нужно будет перезапустить ваш веб-сервер, чтобы изменения вступили в силу.

Также стоит упомянуть, что при сканировании зараженного файла с помощью clamscan он был идентифицирован как вредоносное ПО. Я использую ClamAV версии 0.96.1

У меня сейчас нет заметок под рукой, поэтому я не могу сказать вам точный результат.

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

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

  • Взлом учетной записи администратора
  • Компромисс ваш ftp / ssh / web console / etc у вашего провайдера. Если вы когда-нибудь отправляете свой пароль по незашифрованному протоколу (например, FTP), прекратите это делать.
  • Компромисс ваш собственная локальная машина разработки
  • Уязвимость - это любое серверное программное обеспечение на сервере, например Apache или любой из его модулей.
  • Уязвимость на уровне приложений в PHP на вашем сайте:

    • Вы используете стороннее программное обеспечение, и если да, то все ли оно обновлено?
    • Вы написали значительное количество собственных программ на сайте? Если так, то есть миллион способов написать дыру. Проверьте любой метод, который касается данных, поступающих из пользовательского ввода (REQUEST / GET / POST / COOKIES / FILES). Если вы разрешаете загрузку файлов, сохраняете ли вы эти файлы без фильтров в каталог, доступный для просмотра в Интернете? Если это так, кто-то может загрузить скрипт .php, а затем просто просмотреть его. Инструкции include / require - особенно горячие цели, если вы используете решение для создания шаблонов, например:

    <?php include $_GET['page'] . '.php'; ?>

Как предотвратить его повторение?

  • Убедитесь, что вы полностью доверяете безопасности своего хоста. Позвоните им и расскажите об их политиках безопасности, о том, как быстро они исправляют свои сервисы при обнаружении уязвимостей и т. Д.
  • Не используйте дешевый виртуальный хостинг и платите за выделенный или виртуальный выделенный. Меньше людей используют сервер - меньше векторов для атаки
  • Своевременно обновляйте собственные сторонние приложения / библиотеки. Войдите в их список рассылки, RSS-каналы или что-нибудь еще, чтобы быть в курсе их выпусков.
  • Проведите аудит собственного кода. Если у вас недостаточно опыта для этого, найдите кого-нибудь, кто заплатит за это.
  • Держите свой сайт под контролем версий, например, git или subversion. Сохраните производственный каталог в качестве рабочей копии, чтобы вы могли легко обнаруживать изменения в своей базе кода (но не забудьте заблокировать доступ к метаданным, таким как каталоги .git и .svn).

Вы можете попробовать http://www.hardened-php.net/suhosin/ который, помимо прочего, мог отключить eval (). Если cnfg.php размещался удаленно, это также могло помешать его включению.

Если возможно, не предоставляйте пользователю доступ на запись к файлам php, на котором запущен веб-сервер.

Вот руководство из шести шагов по очистке взлома php eval (base64_decode ()) с сайта WordPress и о том, как предотвратить его повторение ?, которое я недавно нашел, и они записали некоторые красиво написанные вещи, которые вы, возможно, захотите смотреть на . https://secure.wphackedhelp.com/blog/eval-base64-decode-hack-wordpress/

(ключевые моменты статьи)

What is eval base64 decode?
What does eval base64 decode code do?
How does php eval(base64_decode works?
How to identify & get rid of eval-base64_decode like PHP virus? [Various tools to decode base64 string]
Tips for Staying Safe in the Future

Помимо этого, они также показали пример расшифровки того, как вредоносный код, такой как eval, будет работать на зараженном сайте.