Knowledge Base
Раскрытие версии CMS (WordPress, Drupal, Joomla)
Раскрытие версии CMS
Категория: Web Application Security · Риск: low
Раскрытие версии CMS
Почему версия CMS — угроза
Зная точную версию WordPress, Drupal или Joomla, атакующий немедленно ищет **известные CVE для этой версии** и готовые эксплойты. Скрытие версии — первый уровень защиты по принципу «defence in depth».
Где утекает версия
WordPress
# В мета-теге HTML
curl -s https://example.com/ | grep "generator"
# <meta name="generator" content="WordPress 6.4.2" />
# В /readme.html
curl -si https://example.com/readme.html
# В /wp-includes/version.php (закрыт, но структура известна)
# В RSS-фиде
curl -s https://example.com/feed/ | grep "generator"
# <generator>https://wordpress.org/?v=6.4.2</generator>
# В URL стилей/скриптов
# /wp-content/themes/theme/style.css?ver=6.4.2
Drupal
# В мета-теге
curl -s https://example.com/ | grep "generator"
# <meta name="Generator" content="Drupal 10 (https://www.drupal.org)" />
# В CHANGELOG.txt
curl -si https://example.com/CHANGELOG.txt
# В /core/package.json
curl -si https://example.com/core/package.json
Joomla
# В мета-теге
# <meta name="generator" content="Joomla! - Open Source Content Management" />
# В /administrator/manifests/files/joomla.xml
curl -si https://example.com/administrator/manifests/files/joomla.xml
Как скрыть версию
WordPress
// В functions.php вашей темы (или плагин)
// Убрать версию из мета-тега
remove_action('wp_head', 'wp_generator');
// Убрать версию из URL скриптов/стилей
add_filter('style_loader_src', 'remove_wp_version_query', 999);
add_filter('script_loader_src', 'remove_wp_version_query', 999);
function remove_wp_version_query($src) {
if (strpos($src, 'ver=') !== false) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
// Убрать версию из RSS
add_filter('the_generator', '__return_empty_string');
# Заблокировать /readme.html, /license.txt
location ~* ^/(readme|license|wp-config-sample)\.(html|txt|php)$ {
deny all;
return 404;
}
Drupal
// web/sites/default/services.yml
parameters:
http.response.debug_cacheability_headers: false
// Убрать мета-тег generator в настройках: Configuration → Basic site settings
// "Show META tag information" → uncheck
location ~* ^/(CHANGELOG|INSTALL|README|UPGRADE)\.(txt|md)$ {
deny all;
return 404;
}
Joomla
Administrator → System → Global Configuration → Site →
Meta Data Settings → Show Meta Tag → No
Обновление — главная защита
Скрытие версии — дополнительная мера. **Главное** — держать CMS и плагины актуальными:
# WordPress CLI
wp core update
wp plugin update --all
wp theme update --all
# Drupal Composer
composer update drupal/core --with-dependencies
Автоматические уведомления об обновлениях
- WordPress: Admin → Dashboard → Updates (встроенные авто-обновления)
- Drupal: Composer + GitHub Dependabot
- Общее: WPScan API для мониторинга CVE в плагинах
Связанные проверки
- [Открытые admin-панели](/kb/web_app_security/open-admin-panels)
- [Утечка версии сервера](/kb/http/server-header-leakage)