Google XML Sitemaps: убираем версию и сигнатуру из карты сайта
Осеннее обострение — убираем информацию о версии WordPress и плагина из карты сайта
После установки различных плагинов, отвечающих за псевдобезопасность сайта — например, путем сокрытия используемой версии WordPress, имён и версий установленных плагинов и т.п. — обычно выясняется, что они не могут справиться с Google XML Sitemaps: он как выдавал секретные данные о версии WordPress в карте сайта, так и продолжает их выдавать.
Очевидно, что это очень смущает людей, зацикленных на безопасности сайта.
К счастью, это лечится (во всех смыслах).
Открываем файл wp-content/plugins/google-sitemap-generator/sitemap-core.php, ищем такие строки:
- $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generator=\"wordpress/" . get_bloginfo('version') . "\""));
- $this->AddElement(new GoogleSitemapGeneratorDebugEntry("sitemap-generator-url=\"http://www.arnebrachhold.de\" sitemap-generator-version=\"" . $this->GetVersion() . "\""));
- $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generated-on=\"" . date(get_option("date_format") . " " . get_option("time_format")) . "\""));
После чего комментируем эти строки. Либо используем патч:
+++ sitemap-core.php 2010-08-23 20:02:06.000000000 +0300
@@ -1654,9 +1654,9 @@
$this->AddElement(new GoogleSitemapGeneratorXmlEntry('<' . '?xml-stylesheet type="text/xsl" href="' . $styleSheet . '"?' . '>'));
}
- $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generator=\"wordpress/" . get_bloginfo('version') . "\""));
- $this->AddElement(new GoogleSitemapGeneratorDebugEntry("sitemap-generator-url=\"http://www.arnebrachhold.de\" sitemap-generator-version=\"" . $this->GetVersion() . "\""));
- $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generated-on=\"" . date(get_option("date_format") . " " . get_option("time_format")) . "\""));
+// $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generator=\"wordpress/" . get_bloginfo('version') . "\""));
+// $this->AddElement(new GoogleSitemapGeneratorDebugEntry("sitemap-generator-url=\"http://www.arnebrachhold.de\" sitemap-generator-version=\"" . $this->GetVersion() . "\""));
+// $this->AddElement(new GoogleSitemapGeneratorDebugEntry("generated-on=\"" . date(get_option("date_format") . " " . get_option("time_format")) . "\""));
//All comments as an asso. Array (postID=>commentCount)
$comments=($this->GetOption("b_prio_provider")!=""?$this->GetComments():array());
Теперь о том, почему это не спасает. Безопасность через сокрытие (security through obscurity) — это то решение, которое может защитить лишь от школьника. Дело в том, что версию WordPress можно определить по его «отпечаткам пальцев» — CSS-файлам, версиям используемых javascript-библиотек (jQuery, TinyMCE), даже по названиям картинок. Установленные плагины можно определять перебором, либо пользуясь путями к их CSS/JS-файлам, которые часто можно подсмотреть в исходном коде страницы.
Да и по большому счету, если известен эксплойт, поражающий какую-то конкретную версию WordPress, то его можно использовать и без предварительного знания версии WordPress — либо нет. Если мне известна уязвимость типа SQL injection attack для WordPress версии 2.3.1, проще автоматом ее прогнать по всем сайтам, чем сначала рыскать по ним в поисках версии.
Отсюда совет всем камрадам, страдающим паранойей: это — полумера, причем крайне неэффективная; используйте более эффективные решения.
Автор: Wandering Soul; опубликовано в: Патчи; метки: Google XML Sitemaps, WordPress, безопасность, плагинАвг
2010
Комментарии к статье «Google XML Sitemaps: убираем версию и сигнатуру из карты сайта» (3) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Google XML Sitemaps: убираем версию и сигнатуру из карты сайта»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Владимир, ты не совсем прав.
Подумай про роботов-искунов. Как только обнаруживается очередная уязвимость каждому школьнику проще запустить робота для поиска сайтов с движками и плагинами подходящих для взлома версий. Искать будут по отпечаткам, которые мы сами и выложили в сеть. А вот результаты работы экплоита еще нужно как-никак анализировать. Вобщем, я думаю, лишний раз давать повод ковыряться в двигле не стоит. К тому-же пока шум да дело (идет ломка тех кто афиширует свои движки) подоспеет патч, новая версия или ты сам закроешь уязвимость.
Кстати, кроме перечисленных тобой признаков существует еще один, который выдает движок WP всегда, пока не исправишь его исходники. Правда об этом далеко не все знают. Да и кто будет лезть в исходники, кроме нас, параноиков?
Возможно. Анализируя логи, я пришел к выводу, что боты часто ищут все им известные уязвимости.
Версию WordPress очень легко установить по «отпечаткам пальцев» — достаточно посмотреть, какие файлы добавлены/удалены в новой версии WordPress. Плюс можно проанализировать содержимое скриптов и таблиц стилей — они меняются от версии к версии.
У dd32 (Dion Hulse) есть даже простой анализатор: What version of WordPress is behind that website? Довольно простая реализация:
69.163.231.151 "GET /?feed=rss2 HTTP/1.0"
69.163.231.151 "HEAD /readme.html HTTP/1.0"
69.163.231.151 "HEAD /wp-includes/js/tinymce/tiny_mce.js HTTP/1.0"
69.163.231.151 "HEAD /wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js HTTP/1.0"
69.163.231.151 "HEAD /wp-includes/js/jquery/jquery.js HTTP/1.0"
69.163.231.151 "HEAD /wp-admin/js/postbox.js HTTP/1.0"
69.163.231.151 "HEAD /wp-includes/images/smilies/icon_arrow.gif HTTP/1.0"
69.163.231.151 "HEAD /wp-admin/css/login.css HTTP/1.0"
69.163.231.151 "HEAD /wp-admin/css/wp-admin.css HTTP/1.0"
69.163.231.151 "HEAD /wp-admin/wp-admin.css HTTP/1.0"
Хотя дурится на раз-два-три…