Аудит безпеки сайту на OpenCart
OpenCart — частий об'єкт атак через популярність і передбачувані шляхи до адміністративної панелі. Основні вектори: застарілі розширення з вразливостями, слабкі паролі, незахищений admin-шлях, відкритий phpMyAdmin.
Інструменти сканування
# Сканування директорій
ffuf -w /usr/share/wordlists/dirb/common.txt -u https://shop.com/FUZZ -mc 200,301
# Перевірка заголовків
curl -I https://shop.com/ | grep -i "x-powered\|server\|x-content\|x-frame"
# Конфігурація SSL
testssl.sh --fast https://shop.com/
Контрольний список
Шлях до адміністративної панелі:
Стандартний: /admin/ — перше, що перевіряють боти
Змінити в admin/config.php:
define('HTTP_SERVER', 'https://shop.com/my_secret_admin_path/');
# Nginx: обмежити доступ до admin за IP
location /admin {
allow 1.2.3.4;
deny all;
}
Файли для видалення:
# Обов'язково видалити після встановлення
rm -rf install/
ls /var/www/shop.com/install/ # не повинно існувати
# Закрити phpinfo якщо є
find /var/www/shop.com -name "phpinfo.php" -type f -delete
Права файлів:
find /var/www/shop.com -name "config.php" -type f
stat /var/www/shop.com/config.php
# 644 максимум, краще 444
# PHP в upload-директорії
find /var/www/shop.com/image/ -name "*.php"
find /var/www/shop.com/system/storage/upload/ -name "*.php"
# Заборонити PHP в директоріях загрузки
location ~* /image/.*\.(php|phtml)$ { deny all; }
location ~* /system/storage/upload/.*\.(php|phtml)$ { deny all; }
Версія OpenCart та розширення:
# Версія у файлі
grep "VERSION" /var/www/shop.com/catalog/controller/startup/startup.php
# Актуальна: github.com/opencart/opencart/releases
Перевірка розширень на CVE: Шукати у базі вразливостей: https://nvd.nist.gov/vuln/search?query=opencart
Захист від SQL Injection у кастомних розширеннях:
// Небезпечно (розповсюджена помилка в старих розширеннях)
$result = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE sku = '" . $_GET['sku'] . "'");
// Правильно
$sku = $this->db->escape($_GET['sku']);
$result = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE sku = '" . $sku . "'");
CSRF защита: OpenCart використовує токени у формах. Кастомні форми без токенів — вразливі:
// Перевірка токена у кастомному контролері
if (!isset($this->session->data['token']) || $this->session->data['token'] != $this->request->post['token']) {
$this->response->setOutput(json_encode(['error' => 'CSRF token mismatch']));
return;
}
Двофакторна аутентифікація: Встановити розширення «2 Factor Authentication for OpenCart» з Marketplace.
Регулярні бекапи: Автоматизувати резервне копіювання: Admin → System → Settings → кнопка Backup/Restore — тільки для ручного бекапу. Для автоматичного — cron + mysqldump.
Моніторинг змін файлів
# Записати хешіи всіх PHP-файлів
find /var/www/shop.com -name "*.php" -exec md5sum {} \; > /backups/checksums-$(date +%Y%m%d).txt
# Порівняти з попередньою версією
diff /backups/checksums-yesterday.txt /backups/checksums-today.txt
# Змінені файли — підозрілі
Терміни
Аудит безпеки OpenCart зі звітом — 1 день.







