))%20%E2%80%94%20%D0%BA%D0%B0%D0%BA%20%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%82%D0%B2%D1%80%D0%B0%D1%82%D0%B8%D1%82%D1%8C%20%D0%B5%D0%B3%D0%BE%20%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D0%B5%3F.png)
Недавно наш сайт взломали, и в файл index.php был внедрен PHP-код, который выглядел примерно так:
eval (gzinflate(base64_decode('s127ezsS/...bA236UA1')));
Код вызывал включение другого php-файла (cnfg.php), что приводило к отображению спама, связанного с фармацевтикой (но видимого только для googlebot и т. д.). Это похоже на pharma hack для wordpress, за исключением того, что мы не используем указанное программное обеспечение. Код был удален, но я хотел бы предотвратить возникновение подобных случаев в будущем.
Я понимаю, что это довольно обширная проблема, и за ней может скрываться множество уязвимостей в системе безопасности, но я решил рассказать об этом на случай, если кто-то сталкивался с подобной проблемой в прошлом.
Какие потенциальные дыры в безопасности могут позволить загрузить эти php-файлы? И что я могу сделать, чтобы предотвратить это в будущем?
Ваше здоровье
решение1
Вам нужно выяснить, как это произошло.
- Имел ли злоумышленник доступ к файловой системе через sftp/scp?
- Если это произошло, вам необходимо заблокировать ваши методы удаленного доступа.
- Использовал ли злоумышленник какой-либо скрипт загрузчика или ошибку в существующем скрипте, что позволило ему изменять файлы?
- Исправьте скрипт, измените разрешения на ваши скрипты и веб-контент, чтобы процесс веб-сервера не мог их изменить. Веб-сервер должен быть ограничен изменением файлов в каталоге данных где-то. Ваши скрипты и файлы, как правило, не должны принадлежать веб-серверу или быть доступны для записи.
- Может быть, скрипт является частью вредоносного программного обеспечения, которое вы не установили?
- Я видел, как такие вещи включались в шаблоны WordPress. Ничего не подозревающий пользователь скачивал шаблоны с какого-то случайного сайта. Эти шаблоны включали функцию запуска кода с внешнего веб-сервера. Это в сочетании с плохими настройками разрешений позволяло злоумышленнику изменять другие вещи.
решение2
Просто предупреждение.
Если вы используете FileZilla в качестве FTP-клиента, существует вредоносное ПО, которое извлечет ваши учетные данные FTP из ПРОСТОГО ТЕКСТОВОГО ФАЙЛА Filezilla (ух ты!) и использует эту информацию для вставки вредоносного кода (на который указывает тип кода #b58b6f# вокруг команды "gzinflate(base64_decode)"). Именно так ваши файлы будут атакованы/скомпрометированы.
Посмотрите в папке %APPDATA%/Roaming/Filezilla. Один из XML-файлов там содержит все ваши учетные данные FTP-сайта (имя пользователя/пароль/и т. д.) ОТКРЫТЫМ ТЕКСТОМ! И разработчики FileZilla отказываются исправить эту очевидную дыру в безопасности.
Моя рекомендация: удалите FileZilla с вашего компьютера (и вам придется вручную удалить папку в папке APPDATA).
Если вам нужен безопасный FTP-клиент, используйте WinSCP (www .winscp .net ), где вы можете установить главный пароль, а все ваши учетные данные на сайте будут зашифрованы.
Просто предупреждение...Рик...Дж.
решение3
Существует огромное количество возможностей того, как это могло попасть внутрь. Одна часть информации, которая помогает ограничить это, — это тип вашего хостинга (общий, выделенный, виртуальный) и кто ваш хостер. Некоторые потенциальные точки входа:
- Взлом учетной записи администратора
- Компромисствойftp/ssh/веб-консоль/и т.д. аккаунт у вашего провайдера. Если вы когда-либо отправляли свой пароль через незашифрованный протокол (например, FTP), прекратите это делать.
- Компромисствойсобственная локальная машина разработки
- Уязвимость существует в любом серверном программном обеспечении на сервере, например, Apache или любом из его модулей.
Уязвимость уровня приложения в PHP на вашем сайте:
- Используете ли вы стороннее программное обеспечение? Если да, то обновлено ли оно до последней версии?
- Вы написали значительное количество собственного программирования на сайте? Если да, то есть миллион способов, которыми вы могли написать дыру. Проверьте любой метод, который касается данных, полученных от ввода пользователя (REQUEST/GET/POST/COOKIES/FILES). Если вы разрешаете загрузку файлов, сохраняете ли вы эти файлы нефильтрованными в каталоге, доступном для просмотра в Интернете? Если да, то кто-то может загрузить скрипт .php, а затем просто просмотреть его. Операторы include/require являются особенно горячими целями, если вы используете шаблонное решение, например:
<?php include $_GET['page'] . '.php'; ?>
Как предотвратить повторение этого?
- Убедитесь, что вы полностью доверяете безопасности вашего хостера. Позвоните им и расспросите об их политике безопасности, о том, как быстро они исправляют свои сервисы при обнаружении уязвимостей и т. д.
- Откажитесь от дешевого общего хостинга и заплатите за выделенный или виртуально-выделенный. Меньше людей, использующих сервер, означает меньше векторов для атак
- Поддерживайте актуальность своих сторонних приложений/библиотек. Подпишитесь на их рассылку, RSS-каналы или что-нибудь еще, чтобы быть в курсе их релизов.
- Аудит собственного кода. Если у вас недостаточно опыта для этого, найдите того, кто за это заплатит.
- Держите свой сайт в системе контроля версий, например git или subversion. Сохраняйте свой производственный каталог в качестве рабочей копии, чтобы вы могли легко обнаружить изменения в своей кодовой базе (но обязательно заблокируйте доступ к метаданным, таким как каталоги .git и .svn).
решение4
Вы можете попробоватьhttp://www.hardened-php.net/suhosin/что, помимо прочего, могло бы отключить eval(). Если бы cnfg.php был размещен удаленно, это могло бы также помешать его включению.
Если возможно, не предоставляйте пользователю, на котором запущен веб-сервер, права на запись в файлы PHP.