Как это работает?
Причины заражения сайта могут быть различные. Хотелось рассказать о том, что если вовремя не принять профилактические меры по возможному предотвращению взлома, последствия могут быть очень плачевными.
По своему опыту, занимаясь лечением сайтов, я очень часто стал встречаться с таким моментом, как перезаписанные полностью легитимных JS-скриптов на свою вирусную вставку, предназначенную для редиректа.
Давайте рассмотрим участок кода того самого инструмента взломщика, который за это отвечает:
Постараюсь расписать именно ключевые моменты для понимания. Итак.
1 2 3 |
$pos3=$path_info['extension'] if($pos3==="js"){$pos2=stripos($path_info['basename'],$file_j) |
Идет проверка файла на наличие расширения js и, если таковое есть, идет проверка наличие буквы ‘j’ в наличие имени файла.
1 2 3 4 5 |
if($pos1===false){if($position==2){}else{chmod($path,0666) file_put_contents($path,$text) chmod($path,0444) |
Далее, если файл не может прочитать (из-за установленных прав на файл), скрипт присваивает ему читабельные права 0666 и затем, с помощью функции file_put_contents, ПОЛНОСТЬЮ перезаписывает его и меняет права на 0444.
Тут вся основная суть проблемы в функции file_put_contents (о горе программист). Если раньше встречались зараженные сайты, где скрипты хотя бы в конец дописывались или в начало, то в данном примере, из-за отсутствие флага FILE_APPEND
файл перезаписывается полностью. В результате этого летит полностью функционал JS, и в условиях редиректа ни пользователь, ни админ, не может получить полноценный доступ к сайту. В таких случаях могут помочь только бэкапы/локальные копии сайта.
Возникают вопросы: что делать и как быть? Рассмотрим в следующей статье…