Аудит безпеки сайту на Joomla
Joomla має централізовану систему Security Advisories (JSST), але застарілі розширення та неправильна конфігурація — частих джерела вразливостей.
Автоматизоване сканування
# Joomscan — спеціалізований сканер
perl joomscan.pl -u https://yourdomain.com
# OWASP ZAP пасивне сканування
zap-cli quick-scan --self-contained --spider https://yourdomain.com
# Nikto — загальний веб-сканер
nikto -h https://yourdomain.com
Контрольний список
Версії:
- Joomla core — актуальна версія
- Всі розширення — актуальні версії
- PHP 8.1+, застарілі версії EOL
Конфігурація:
// configuration.php — обов'язкові параметри
public $debug = '0'; // не показувати помилки
public $error_reporting = 'none'; // або 'simple'
public $force_ssl = '2'; // примусовий HTTPS
public $sef = '1'; // SEO-дружні URL
public $robot = 'noindex, follow'; // для staging
public $cookie_httponly = '1'; // захист cookies
public $cookie_secure = '1'; // тільки HTTPS
public $lifetime = '15'; // хвилини — час сесії
public $session_handler = 'database'; // сесії в БД (не файли)
Права доступу до файлів:
find /var/www/yourdomain.com -type f -name "*.php" -perm /o+w
find /var/www/yourdomain.com/configuration.php
stat /var/www/yourdomain.com/configuration.php
# Повинно бути 444 або 400
# Перевірити PHP у папці загрузок
find /var/www/yourdomain.com/images -name "*.php"
# Якщо є — ознака компрометації
Приховання версії:
// В кінці configuration.php
public $MetaVersion = '0'; // не показувати версію Joomla в мета-теге
Закрити доступ до administrator/ з обмеженням по IP в Nginx:
location /administrator {
allow 1.2.3.4; # ваш IP
deny all;
}
Перевірка розширень на вразливості: Список вразливих розширень: https://vel.joomla.org (Vulnerable Extensions List). Перевірити всі встановлені розширення.
# Швидка перевірка через curl
curl -s https://vel.joomla.org/joomla-vel-json-feed | \
python3 -c "import sys, json; data = json.load(sys.stdin); print([d['title'] for d in data['items']])"
HTTP-заголовки безпеки:
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
2FA: Перевірити, чи включена двофакторна аутентифікація для адміністраторів.
Перевірка кастомного коду
# SQL Injection у кастомних компонентах
grep -r "\\\$_GET\|\\\$_POST\|\\\$_REQUEST" administrator/components/com_custom/
grep -r "->query\|->loadResult" administrator/components/com_custom/ | grep -v "quoteName\|quote("
Терміни
Аудит безпеки Joomla-сайту — 1 день. Усунення виявлених проблем — 3–8 годин.







