Аудит безопасности сайта на 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'; // ЧПУ
public $robot = 'noindex, follow'; // для staging
public $cookie_httponly = '1'; // защита куки
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 в мета-теге
В Nginx закрыть доступ к administrator/ с ограничением по IP:
location /administrator {
allow 1.2.3.4; # ваш IP
deny all;
}
Проверка Extensions на уязвимости: Список уязвимых расширений: 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 часов.







