Модуль OpenCart Lightning : кеширование, оптимизация, улучшение SEO и Google PageSpeed Nulled

  • Автор темы Автор темы Vukas
  • Дата начала Дата начала

после реальных тестов стоит сделать следующие выводы: 1) если сравнить с оригиналом модуля 4.58 - эта версия ЛУЧШЕ, закрыты дырки и постоянные обращения к серверу автора, лучше производительность; 2) при использовании данного модуля нужно полностью отказаться от сторонних webp модулей; 3) модуль заточен именно под стандартный opencart 3 (не 4 версия), под остальные модификации нужно точечно править; 4) если есть динамические данные (к примеру вверху вишлист, сравнение и тд) - кеширование их поломает, тут нужно либо отказываться от них, либо переделывать под ajax; 5) модуль нужно отдельно тестить на пк/моб версиях, могут быть проблемы; 6) при идеальных условиях и верных настройках - скорость сравнима с том маркетплейсами, даже если стоит слабый впс!
 
Кто тестировал с темою journal?
Как результаты?
 
после реальных тестов стоит сделать следующие выводы: .....
Да, соглашусь, под любой магазин нужно тестить, и адаптировать под конкретный случай, но в целом это реально так как код открыт
 
Да, соглашусь, под любой магазин нужно тестить, и адаптировать под конкретный случай, но в целом это реально так как код открыт
1790061133072.png1790061145915.png
Стандартная тема. Сайт реально работает очень и очень быстро, не хватает только redis.
 
Кто тестировал с темою journal?
Как результаты?
Я бы сразу отключил все, что дублирует Lightning: кеш, минификацию, lazy load и обработку картинок. Если оба модуля полезут оптимизировать одно и то же, потом замучаешься искать, кто ломает страницу.

Отдельно надо проверить корзину, избранное, сравнение и шапку. У темы там много динамики, а Lightning может закешировать ее как обычный HTML. Лучше запускать на копии магазина и включать функции по одной. Готового универсального набора настроек тут вряд ли будет.
 
Отчет по аудиту безопасности модуля OpenCart Lightning v4.58

Разобрал и деобфусцировал код модуля Lightning 4.58, полностью прошелся по логике работы. Ниже тезисно собрал все найденные косяки, уязвимости и потенциально опасные закладки от автора, которые мы вычистили и исправили.

====================================================================
1. SQL-ИНЪЕКЦИИ (SQLi)
====================================================================
В модуле нашлось несколько мест с прямыми уязвимостями к SQL-инъекциям:

1.1. Параметр convert в special.php (строка ~1137)
Переменная бралась напрямую из $_GET['convert'] без какой-либо санитизации, приведения типов или проверки по белому списку:
$Mis = $_GET["convert"];
$db->query("SHOW TABLE STATUS WHERE Name = '$Mis'");
$db->query("ALTER TABLE `$Mis` ENGINE=INNODB");
Сюда можно было спокойно прокинуть пейлоад и дописать свои SQL-конструкции.

1.2. Прямое выполнение произвольного SQL (special.php, строки ~2419 и ~2610)
В функциях профилирования и объяснения запросов:
$Magj = $db->query("EXPLAIN " . $Mhj);
$Mbm = $db->query($Mhj);
Переменная $Mhj приходила извне. Любой запрос выполнялся к базе напрямую без валидации. При доступе к методу это давало возможность выполнить абсолютно любой произвольный SQL (чтение таблиц, UPDATE, DROP и т.д.).

1.3. Конкатенация переменных без экранирования (special.php, строки ~2065, ~2133)
В паре мест переменные вроде $lang_to и $Mik['language_id'] подставлялись напрямую в текст запроса через точку, без приведения к (int) и без $db->escape().

====================================================================
2. ФАЙЛОВЫЕ УЯЗВИМОСТИ (Path Traversal, LFI, удаленный код)
====================================================================
2.1. Чтение произвольных файлов сервера (special.php, функция Wek)
Просмотрщик логов брал путь из $_GET['log']:
$Mdk = strip_tags($Mdk);
if (strpos($Mdk, "..") !== false) exit;
file_get_contents($path . $Mdk);
Проверка только на ".." крайне слабая и при определенных условиях обходится. Это классический Path Traversal, позволяющий читать системные файлы и конфиги сайта.

2.2. Поиск по всему дереву файлов (special.php, маршрут li_op=search)
Функция Wmr рекурсивно парсила папки DIR_SYSTEM и DIR_STORAGE по переданной строке и выдавала в браузер куски исходного кода с номерами строк. По факту — готовый инструмент для выкачивания чужих конфигов и поиска паролей.

2.3. Рекурсивное удаление файлов (tetha.php, функция Wd_)
Очистка кеша реализована через рекурсивный обход scandir() + unlink(). Если подсунуть туда манипулированный путь (или если в переменной будет пустота / корень), скрипт сносит все подряд без проверки, находится ли папка внутри DIR_CACHE.

2.4. Удаленная инъекция через iframe (RFI / Remote JS Execution)
В tetha.php экран настроек подгружался по ссылке:
Это огромная дыра: автор модуля со своего сервера мог в любой момент отдать любой JS-код, который выполнялся в браузере залогиненного администратора (с полным доступом к админке, токенам, заказам и созданию пользователей).

====================================================================
3. ВЫПОЛНЕНИЕ СИСТЕМНЫХ КОМАНД (RCE / Server Reconnaissance)
====================================================================
В special.php (функции Wlc и Wld):
$Maaz = @popen("ps axuewwww", "rb");
$output = stream_get_contents($Maaz);
$Maaz = @popen("top -b -n 1", "rb");

Модуль дергал консольные утилиты Linux:
- ps axuewwww выводит вообще все запущенные на сервере процессы, включая аргументы запуска (где часто висят пароли к MySQL, крон-задачи и пути других пользователей на сервере).
- top парсил системную нагрузку и PID.
Для модуля кеширования OpenCart это абсолютно недопустимые системные вызовы.

====================================================================
4. УТЕЧКИ ЧУВСТВИТЕЛЬНЫХ ДАННЫХ И СЛИВЫ
====================================================================
4.1. Дамп всего $_SERVER (zero.php, маршрут li_op=s)
При обращении тупо вываливал весь массив $_SERVER на экран: логин/пароль к базе данных (DB_PASSWORD), системные пути, хосты, параметры веб-сервера.

4.2. Слив таблицы oc_setting (zero.php, маршрут li_op=tools&tool=setting)
Запрос делал прямой SELECT * FROM oc_setting и выкатывал в браузер всю таблицу настроек магазина: ключи платежек, API-ключи Новой Почты, доступы мерчантов и т.д.

4.3. Слив IP-адресов клиентов наружу (special.php, контроль доступа)
В логике контроля доступа IP-адреса посетителей магазина и параметры слались на внешние сервисы (parsemx.com, ip-api.com, bukrek.net) для гео-анализа и пробива провайдеров.

4.4. Телеметрия автора
При каждой проверке лицензии наружу на devs.mx улетал домен, версия OpenCart, IP сервера и текущие токены.

====================================================================
5. КОСЯКИ С СЕССИЯМИ (почему выкидывало из админки)
====================================================================
5.1. Блокировка сохранения сессий в beta.php (функция Wni)
Модуль перехватывал метод Session\DB::write() и если данные сессии не изменились, возвращал true и НЕ обновлял поле expire в таблице oc_session. В итоге через некоторое время сессия админа считалась протухшей, база ее удаляла, и админа выкидывало с ошибкой "Неправильная токен-сессия".

5.2. Затирание сессии админа в zero.php (функция Wnj)
Фоновые AJAX-запросы виджета могли триггерить REPLACE INTO oc_session с данными без user_id/user_token, сбивая авторизацию.

====================================================================
6. НЕБЕЗОПАСНАЯ ДЕСЕРИАЛИЗАЦИЯ
====================================================================
По всему коду разбросаны вызовы unserialize() над файлами из кеша без параметра ['allowed_classes' => false]. Если бы в кеш-файл попала модифицированная строка, это привело бы к выполнению деструкторов произвольных классов (PHP Object Injection).

====================================================================
ЧТО БЫЛО СДЕЛАНО И ИСПРАВЛЕНО:
====================================================================
1. Полностью отрезали все внешние запросы к devs.mx, parsemx, bukrek и др. Модуль больше никуда наружу не стучится.
2. Сделали полностью локальную страницу настроек на чистом PHP/HTML (li_op=settings), настройки теперь сохраняются в локальный конфиг storage/cache/lightning/core/b без всяких удаленных фреймов.
3. Закрыли дыру с дампом $_SERVER: все секретные поля (pass, key, secret, token, auth, pwd, db) маскируются звездочками.
4. Починили обработчик сессий в beta.php и zero.php: сессии админа больше никогда не сбрасываются и не затираются фоновыми процессами.
5. Убрали опасные вызовы popen с ps/top.
6. Ограничили файловые операции только папками кеша сайта (DIR_CACHE).
7. Защитили прямой доступ к системным инструментам проверкой ключа и токена админа.
8. Убрали все авторские "капканы" и проверки User-Agent/HTTP_X_REQUESTED_WITH, из-за которых модуль раньше падал при работе через Cloudflare.

П.С. Прежде покупать это Г**** подумайте 100 раз, модуль и 1 бакса не стоит с такими дырами и закладками от недоафтара
Я даже хз что тут сказать, это просто п..... и люди за такое деньги отдавали.
 
Назад
Верх