Кто-то уже второй раз добавляет кусок javascript на сайт, который я программирую. Этот javascript перехватывает Google adsense, вставляя свой собственный номер счета и внедряя повсюду рекламу.
Код всегда добавляется, всегда находится в одном определенном каталоге (используемом сторонней рекламной программой), затрагивает множество файлов в нескольких каталогах внутри одного рекламного каталога (около 20) и вставляется примерно в одно и то же ночное время. Итак, как они могли добавить текст в эти файлы? Это связано с правами доступа, установленными на файлы (от 755 до 644)? С пользователем веб-сервера (он находится на MediaTemple, поэтому должен быть безопасным, да?)? Я имею в виду, что, если у вас есть файл с правами 777, я все равно не могу просто добавить в него код по своему усмотрению... как они могут это сделать?
Вот пример фактического кода:
<script type="text/javascript"><!--
google_ad_client = "pub-5465156513898836";
/* 728x90_as */
google_ad_slot = "4840387765";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
Вот что я проверил — под проверкой я имею в виду, что я осмотрел время, когда файлы были изменены, на предмет каких-либо странностей, а также проверил файлы на наличие POST-запросов и обращений к каталогам:
access_log (ничего по времени, кроме обычного (т. е. чрезмерного) трафика msn бота);
error_log (ничего, кроме обычных ошибок «файл не существует» для безобидных на вид файлов);
ssl_log (ничего, кроме обычного);
messages_log (здесь нет доступа к FTP, кроме моего).
Ответ 1
Прежде всего, chmod 744 — это НЕ то, что вам нужно. Смысл chmod в том, чтобы отозвать доступ к другим учетным записям в системе. Chmod 700 гораздо более безопасен, чем chmod 744. Однако Apache нужен только бит execute для запуска вашего php-приложения.
chmod 500 -R /ваш/webroot/
chown www-data:www-data -R /your/webroot/
www-data обычно используется в качестве учетной записи Apache, которая используется для выполнения php. Вы также можете выполнить эту команду, чтобы увидеть учетную запись пользователя:
'<?php
print system("whoami");
?>'
FTP ужасно небезопасен, и вполне вероятно, что вас взломали этим методом. Используя FTP, вы можете сделать файлы доступными для записи. Убедитесь, что вы запустили антивирус на всех машинах с FTP-доступом. Существуют вирусы, которые прослушивают локальный трафик на предмет имен и паролей пользователей FTP, а затем входят в систему и заражают файлы. Если вы заботитесь о безопасности, используйте SFTP, который шифрует все данные. Передавать исходный код и пароли по каналам связи открытым текстом — недопустимо.
Другая возможность заключается в том, что вы используете старую библиотеку или приложение. Посетите сайт производителя программного обеспечения и убедитесь, что вы используете последнюю версию.
Ответ 2
Мои учетные записи Media Temple Grid Server были «взломаны» подобным образом несколько раз. Их безопасность очень слабая... началось с ПРОСТЫХ ТЕКСТОВЫХ ПАРОЛЕЙ в прошлом году и продолжается до сих пор (вы можете позвонить в техподдержку, а они спросят: «Какой у вас пароль?»). Я знаю, потому что ежемесячно получаю электронные письма о том, что они изменили все пароли моих учетных записей, и они действительно идут и меняют пароли баз данных за вас каждый раз, когда взламывают их. Внешне эта компания выглядит нормально, но на сервере сети царит полный хаос. Я рекомендую немедленно перейти на другой сервер.
Ответ 3
Да, это определенно может быть связано с правами доступа к файлам. Имея файлы, доступные для записи веб-процессом, вы открыты для любых уязвимостей в плане безопасности запущенных веб-приложений. Заблокируйте все, чтобы веб-процесс не мог читать или записывать больше, чем ему нужно.
Другой компонент — отслеживание того, как именно они изменяют ваши файлы. Для начала стоит проверить журналы доступа веб-сервера. Проверьте время последнего входа для различных пользователей. Вы также можете установить скрипт, который будет отслеживать изменение файлов и уведомлять вас, чтобы вы могли попытаться поймать преступников с поличным!
Ответ 4
Первое, с чего следует начать, — это просмотр журналов FTP. Журнал должен содержать если и не все, то большинство действий, вместе с временными метками, поэтому, если вы знаете, в какое время были изменены ваши файлы, вы можете определить, взломана ли ваша учетная запись FTP или нет.
Далее, это может быть скрипт на вашем веб-сервере, который внедряет этот код. В сценарии виртуального хостинга, я думаю, можно сделать cat /web/malicious.com/script.js >> /web/innocent.com/index.php. Это может сработать при определенных условиях, например, команда выполняется пользователем httpd и файл index.php также принадлежит/записывается этим пользователем. В этом случае вы должны попросить вашего хостинг-провайдера отследить учетную запись, используемую для внедрения скриптов.
Ответ 5
Большинство файлов сайта должны быть доступны для чтения веб-сервером. На сайте, доступном только для чтения, только журналы должны быть доступны для записи веб-сервером. Установите владельцем не того, кто пользуется веб-сервером. Установите защиту 640 на все файлы, кроме скриптов. Установите для скриптов и каталогов защиту 750. Для файлов или каталогов, которые должны быть записаны веб-сервером, вы можете изменить владельца на веб-сервер или установить chmod g+2 для соответствующих файлов или каталогов.
Security