12 января 2013
Поиск инфицированных iframe на сайте
Довольно часто спрашивают о способе поиска сразу по всему серверу файлов, зараженных iframe или js. Итак, предположим, сегодня сайты на сервере оказались заражены строкой:
Соответственно, будем искать по «private-area.ru». Для поиска следует из папки с конкретным сайтом или всеми сайтами запустить в консоли (SSH):
find . -type f | xargs grep -l 'private-area.ru' 2>/dev/null
В выдаче получаем список зараженных файлов:
/var/www/user1/data/www/site1.com/portfolio.html
/var/www/user1/data/www/site1.com/links.html
/var/www/user1/data/www/site1.com/template.html
/var/www/user1/data/www/site1.com/contact.html
/var/www/user1/data/www/site1.com/home.html
/var/www/user1/data/www/site1.com/about.html
/var/www/user2/data/www/site2.ru/shema.html
/var/www/user3/data/www/site3.ru/index.html
/var/www/user3/data/www/site4.ru/index.html
/var/www/user3/data/www/site5.ru/index.htm
/var/www/user3/data/www/site6.ru/index.html
/var/www/user3/data/www/site7.ru/webstat/awstats.site7.ru.errors404.012013.html
/var/www/user3/data/www/site7.ru/webstat/awstats012013.site7.ru.txt
/var/www/user3/data/www/subsite.site8.ru/index.html
/var/www/user3/data/www/site8.ru/webstat/awstats012013.site8.ru.txt
/var/www/user3/data/www/site8.ru/webstat/awstats.site8.ru.refererpages.012013.html
/var/www/user4/data/www/site9.ru/index.html
/var/www/user5/data/www/site10.ru/index.htm
Теперь вручную очищаем. Есть и автоматизированные решения, но я настоятельно рекомендую удалять все вручную.
UPD Еще вариант:
find . -name '*.js' -exec grep -i 'string to search for' {} \; -print
Тоже самое можно сделать одним grep’ом:
grep -Rsl ‘private-area’ /path/to/dir/
(опция -s не во всех версиях поддерживается, тогда можно и 2>/dev/null в конец добавить)