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

Внимание, очередная уязвимость в модуле редиректов!


Yoda

Recommended Posts

Так как на форуме нет раздела безопасность @dinox, сделай пожалуйста.
Пишу пока в курилку.


Вчера ко мне обратились мои подопечные со странной нагрузкой на сервер!

 

Их шарашили изо всех пушек, пытаясь пробиться в базу через sql уязвимость менеджера редиректов, и в конце концов базу таки уложили.
Не будем тыкать пальцем чей это модуль, просто проверьте у себя и своих подопечных в Index.php в корне вот такие строки:

 

// Redirect manager
$url =  htmlspecialchars($_SERVER['REQUEST_URI']);
$redirect = $db->query("SELECT * FROM oc_redirect  WHERE  from_url = '" . $url . "' LIMIT 1");
	
if($redirect->row) {
	header( 'Location: ' . htmlspecialchars_decode($redirect->row['to_url'])  , true, 301 );
	exit();
}
// End redirect manager

И замените на такое

// Redirect manager
$url =  htmlspecialchars($_SERVER['REQUEST_URI']);
$redirect = $db->query("SELECT * FROM oc_redirect  WHERE  from_url = '" . $db->escape($url) . "' LIMIT 1");
	
if($redirect->row) {
	header( 'Location: ' . htmlspecialchars_decode($redirect->row['to_url'])  , true, 301 );
	exit();
}
// End redirect manager

Это код из каких-то ранних версий дополнения, на сегодня там все ушло глубже в код и модель закодирована, но я думаю уязвимость осталась.

Данный код присутсвовал в версии модуля редиректа полутарагодичной давности.
Но брежененного бог бережет и да прибудет с вами сила.

 


Также категорически рекомендую всем, у кого до сих пор 1.5 обновить класс db.php и классы драйверов баз от 1.5.6 

https://github.com/opencart/opencart/tree/1.5.6.4/upload/system/database  и поменять в конфигах mysql на mysqli.

 

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

Также в силу того, что данный мод является клоном модуля с офсайта, все кто использует оригинальный модуль - тоже проверьте есть ли у вас экранирование параметра  $_SERVER['REQUEST_URI'].

 

Ну и чтобы не быть голословным и не было возмущений вот структура таблицы моего подопечного от этого дополнения.

 

CREATE TABLE IF NOT EXISTS `oc_redirect` (
  `redirect_id` int(11) NOT NULL DEFAULT '0',
  `active` tinyint(1) NOT NULL DEFAULT '0',
  `from_url` varchar(512) CHARACTER SET utf8 NOT NULL,
  `to_url` varchar(512) CHARACTER SET utf8 NOT NULL,
  `response_code` int(3) NOT NULL DEFAULT '301',
  `date_start` date NOT NULL DEFAULT '0000-00-00',
  `date_end` date NOT NULL DEFAULT '0000-00-00',
  `times_used` int(5) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

А вот код в модуле, который распространяет один известный автор:

$sql = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "redirect` (";
$sql .= " `redirect_id` int(11) NOT NULL AUTO_INCREMENT,";
$sql .= " `active` tinyint(1) NOT NULL DEFAULT '0',";
$sql .= " `from_url` text COLLATE utf8_bin NOT NULL,";
$sql .= " `to_url` text COLLATE utf8_bin NOT NULL,";
$sql .= " `response_code` int(3) NOT NULL DEFAULT '301',";
$sql .= " `date_start` date NOT NULL DEFAULT '0000-00-00',";
$sql .= " `date_end` date NOT NULL DEFAULT '0000-00-00',";
$sql .= " `times_used` int(5) NOT NULL DEFAULT '0',";
$sql .= " PRIMARY KEY (`redirect_id`)";
$sql .= ") CHARSET=utf8 COLLATE=utf8_general_ci";
$this->db->query($sql);

 

Sovpadenie-ne-dumayu.jpg

 

UPD. Что делать с кодом, который закодирован в модуле и скорее всего такой там  и остался?

 

 

  • +1 3
Надіслати
Поділитися на інших сайтах


1 час назад, chukcha сказал:

Автор модуля уведомлен?

 

Чтобы опять хвосты подчистил, и сказал какой он пушистый? 
И что это все злые языки ?

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


8 часов назад, Yoda сказал:

Также в силу того, что данный мод является клоном модуля с офсайта

 

насколько помню, ocmodify и есть addist

насчет совпадения - забавно, как всегда

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

5 минут назад, AlexDW сказал:

 

насколько помню, ocmodify и есть addist

насчет совпадения - забавно, как всегда

Холодно)

 

Давайте пока не будем играть в угадайку, а дадим время исправить эту ситуацию на местах. 
Я обрисую ситуацию владельцам площадок. Чтобы были приняты меры с покупателями.


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

Для Nginx - приличный пример здесь.

Но бездумным копипастом решить все не выйдет, ссылки просто как базовые примеры.

 

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


17 минут назад, Yoda сказал:

ссылки просто как базовые примеры.

Вот...!!!

# Block WP timthumb hack

 

У меня еще боты всякие ходят на wp адреса, частенько, я их тоже к ногтю


ps Все пропало, теперь htaccess будет полон мусора...

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

35 минут назад, Yoda сказал:

Холодно)

 

нормально, речь про автора модуля по ссылке

а не про уважаемого любителя "совпадений", темы про которого регулярно затираются

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

21 минуту назад, chukcha сказал:

Вот...!!!

# Block WP timthumb hack

 

У меня еще боты всякие ходят на wp адреса, частенько, я их тоже к ногтю


ps Все пропало, теперь htaccess будет полон мусора...

 

Сделайте полезное дело... Выжимку из правил. И соберите в итоговый код.

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


16 минут назад, Yoda сказал:

Выжимку из правил. И соберите в итоговый код. 

Для быстрого бана - имею вот такое, потом переношу в htaccess



 

1848884078.png

 

18 минут назад, Yoda сказал:

в итоговый код. 

Зачем? Одни не слышат, другие не понимают, третьи, извините, обезьянки (не, никого не хочу обидеть)
 

 

1 час назад, Yoda сказал:

Но бездумным копипастом решить все не выйдет, ссылки просто как базовые примеры.

Сколько человек дойдет до этой фразы?
 

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

3 минуты назад, chukcha сказал:

Для быстрого бана - имею вот такое, потом переношу в htaccess



 

1848884078.png

 

Зачем? Одни не слышат, другие не понимают, третьи, извините, обезьянки (не, никого не хочу обидеть)
  

 

Сколько человек дойдет до этой фразы?
 

Затем, что не все обезьянки!
 

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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