Сокрытие признаков Joomla!

Сокрытие признаков Joomla!

При взломе сайта злоумышленник в первую очередь определяет платформу и CMS сайта. Сделать это можно по ряду признаков, характерных для той или иной CMS.

 

Рассмотрим самые распространённые и явные признаки CMS Joomla!, а также способы устранения этих признаков.

 

1. Копирайт внизу страницы

Стандартный копирайт выглядит так: «Joomla! is Free Software released under the GNU/GPL License».

2. Формат ссылок

Стандартные ссылки у Joomla! выглядят следующим образом: http://site.ru/index.php?option=com_frontpage&Itemid=1 http://site.ru/index.php?option=com_content&task=view&id=14&Itemid=1 http://site.ru/content/view/14/1 и т.п.

3. Административная панель (админка)

Проверяем наличие админки по стандартному адресу Joomla!: site.ru/administrator

4. Meta-теги

Многие забывают изменить описание сайта и его ключевые слова. В итоге в исходном коде страницы мы можем увидеть следующее:

<meta name="description"
content="Joomla - the dynamic portal engine and content management system" />
<meta name="keywords" content="Joomla, joomla" />

А также тег generator, который генерируется ядром:

<meta name="Generator"
content="Joomla! - Copyright © 2005-20010 Open Source Matters. All rights reserved." />

5. Просмотр позиций для модулей

При обращении к сайту по адресу site.ru/?tp=1 можно легко убедиться что сайт работает именно на CMS Joomla!

6. Robots.txt

Просмотрев этот файл по адресу site.ru/robots.txt можно также с некоторой долей вероятности определить CMS:

User-agent: * Disallow: /administrator/ Disallow: /cache/ Disallow: /components/

7. Постраничная навигация сайта

Иногда достаточно одного взгляда на построение постраничной навигации: << В начало < Предыдущая 1 2 3 4 5 Следующая > В конец >>

8. Содержимое папок сайта

На некоторых хостах (что совсем печально) можно посмотреть содержимое всех папок сайта: например site.ru/components/

9.  Стандартные пути к шаблону

и название соответствующих классов (зашитых в ядро).

10. Стандартная иконка Joomla!

Многие забывают о ней или не считают нужным сменить, но это ведь почти стопроцентный признак.

11. Ошибка 404

После ввода заведомо несуществующего адреса, Joomla! выдает стандартную, всем знакомую красненькую табличку с надписью «404 - Компонент не найден».

Способы избавления от вышеперечисленных признаков

1.   Копирайты в «подвале»  (footer) сайта

Joomla 1.0.x

После установки Joomla! внизу страницы можно увидеть следующее:

 

© 2009 Site Name Joomla! is Free Software released under the GNU/GPL License.

 

В файле index.php вашего шаблона есть строка:

 

<?php include_once( $GLOBALS['mosConfig_absolute_path'] . '/includes/footer.php' ); ?>

Удалив ее, можно избавиться от вывода копирайтов в «подвале» сайта. Но только для этого шаблона. Если у вы часто меняете шаблоны, есть смысл сделать небольшой хак, что б избавиться от этого раз и навсегда.

 

Открываем файл includes/footer.php и видим следующие стоки:

 

<div align="center"><br />&copy; <?php echo mosCurrentDate( '%Y' ) . ' ' . $GLOBALS['mosConfig_sitename'];?><br /></div></div> <p>Этот</p> <div>выводит значок копирайта, текущий год и название вашего сайта. <p> </p> А также: <p> </p> <div class="textcode"><div align="center"><br /><?php echo $_VERSION->URL; ?><br /></div></div> <p>Этот</p> <div>выводит версию движка и лицензию. <p> </p> Удаляем или редактируем их. <p> </p> <h3>Joomla 1.5.x</h3> <p>В линейке 1.5.x вывод копирайтов осуществляется в корне отличным способом и убрать его можно минимум тремя способами:</p> <p> </p> а) В менеджере модулей отключить вывод модуля «Footer» (mod_footer). Но в этом случае исчезнуть все копирайты, а не только "joomla-овские". <p> </p> б) В языковом файле /language/ru-RU/ru-RU.mod_footer.ini в строках: <p> </p> <div class="textcode">FOOTER_LINE1=
FOOTER_LINE2=

Убрать все, что справа от знака равно

 

в) В файле /modules/mod_footer/tmpl/default.php отключить вывод 2-ой строки, удалив строку:

 

<div><?php echo JText::_( 'FOOTER_LINE2' ); ?></div>

2. Ссылки на страницы

Чтобы изменить стандартный тип ссылок на внутренние страницы Joomla! необходимо использовать сторонние компоненты, которые могут создавать любые ссылки на внутренние страницы вашего сайта – sh404SEF, ARTIO JoomSEF, NuSEF (бесплатные), SEF Advance (платный) и другие.

3. Админка

Всем известно что вход в административную часть сайта на CMS Joomla! осуществляется через site.ru/administrator

 

Есть два способа скрыть вход в админку.

 

а) Средствами сервера: поставить пароль на папку administrator

 

В папке administrator создаем такой .htaccess:

 

AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user

Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

 

У этого способа есть один очень существенный недостаток: если используются расширения у которых файлы обращаются к папке администратора (например языковый файл или другие), то вместо требуемого пользователь столкнется с предложением ввести логин и пароль.

 

б) Средствами Joomla: поставить специально предназначенные для этого расширения.

 

Например плагин для Joomla! 1.5 jSecure Authentication. При переходе на страницу site.ru/administrator он включает заданную переадресацию. В админку можно попасть, только задав ключевое слово в адресной строке: site.ru/administrator/?password

 

4. Meta-теги сайта. Description, keywords и Generator

Содержимое meta-тегов Description и keywords прописывается в глобальных настройках сайта и означает не что иное, как описание сайта и его ключевые слова. Просто не забывайте заполнять эти данные (встречается и такое). А вот на meta-тег Generator без хака мы повлиять не сможем.

Generator для Joomla! 1.0.x:

В исходном коде страниц видим:

<meta name="Generator" content="Joomla! - Copyright © 2005-2007 Open Source Matters. <br />All rights reserved." />

Данная строка выводится в функции mosShowHead() файла includes/frontend.php, строка 195 (для Joomla 1.0.15):

$mainframe->addMetaTag('Generator', $_VERSION->PRODUCT . ' - ' . $_VERSION->COPYRIGHT);

Для удаления этой информации из кода страниц сайта необходимо закомментировать или удалить эту строчку.

Generator для Joomla! 1.5.x:

В исходном коде страниц видим:

<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

Есть два способа влияния на мета-тег Generator: путем хака ядра и внесением кода в шаблон. Первый способ (хак ядра Joomla!) подходит тем, кто не планирует постоянно обновлять ядро сайта и/или часто меняет шаблоны сайта.

Открываем следующие файлы:

libraries/joomla/document/document.php
libraries/joomla/document/html/renderer/head.php

Если хотим просто изменить эту строку, то в файле document.php находим примерно 85 строку:

var $_generator = 'Joomla! 1.5 - Open Source Content Management';

и вставляем свое внутрь кавычек ‘ ‘ Если хотим совсем удалить этот мета тег, то в файле head.php, комментируем // строку (примерно 83):

$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />';

Второй способ (правка шаблона), более мягкий и не требует вмешательства в код ядра Joomla! (при обновлениях ядра можно не беспокоиться о хаках, так как их просто не будет). Где-то между тегами и вставляем следующую строку:

<?php $this->setGenerator('Ваш мета-тег geneator');?>

Или же оставляем пустое значение мета-тега:

<?php $this->setGenerator(''); ?>

5. Исключаем возможность просмотра позиций для модулей через site/?tp=1

Для Joomla! 1.0.x

Для этого нам надо сделать небольшой хак. Открываем файл /includes/frontend.php Ищем примерно 129-135 строки (для Joomla! 1.0.15):

$tp = intval( mosGetParam( $_GET, 'tp', 0 ) );
if ($tp) {
echo '<div style="height:50px;background-color:#eee;<br />margin:2px;padding:10px;border:1px solid #f00;color:#700;">';<br /> echo $position;<br /> echo '</div>';<br /> return;<br /> }</div> <p>Удаляем их, либо комментируем.</p> <h3>Для Joomla! 1.5.x</h3> <p>Открываем файл /libraries/joomla/application/module/helper.php Ищем примерно 96-103 строки:</p> <div class="textcode">if(count($result) == 0) {
if(JRequest::getBool('tp')) {
$result[0] = JModuleHelper::getModule( 'mod_'.$position );
$result[0]->title = $position;
$result[0]->content = $position;
$result[0]->position = $position;
}
}

Комментируем их.

Далее ищем примерно 199-201 строки:

if(JRequest::getBool('tp')) {
$attribs['style'] .= ' outline';
}

Комментируем их.

7. Постраничная навигация.

Для изменения внешнего вида постраничной навигации необходимо немного переработать её вывод. В этом поможет статья «Изменение постраничной навигации сайта на CMS Joomla!»

8. Запрет просмотра содержимого папок вашего сайта

Если набрать адрес существующей папки, например, http://example.org/components/com_content/ и вы видите ее содержимое, то это значит, что на Вашем сервере настроенная выдача список директорий. Это дает возможность злоумышленнику дополнительные плюсы при изучении вашего сайта. Избежать открытого списка можно двумя способами:

1. В .htaccess или в конфигурации apache создать директиву:

Options - Indexes

2. В каждую директорию положить пустой файл index.html. По умолчанию загружается файл с названием index (.htm, .html, .php и т.д.).

10. Стандартная иконка Joomla!

В первую очередь иконка сайта favicon.ico ищется в корне сайта. Вы можете создать свою иконку (например с помощью сервиса http://favicon.ru) и загрузить ее в корень. Второй вариант - иконка помещается в папку вашего шаблона.

11. Ошибка 404

Страница с ошибкой 404 появляется тогда, когда неверно указан адрес (URL) запрашиваемого сайта или страницы, либо когда документ отсутствует на web-сервере. Обычно пользователь закрывает эту страницу и уходит на поиски других ресурсов, удовлетворяющих его требованиям. Для того, чтобы "не потерять" пользователя, рекомендуется создать свою страницу с ошибкой 404, со своим дизайном и инструкциями, куда перейти пользователю дальше - воспользоваться поиском или перейти на главную страницу, карту сайта и т.п.

В данной статье рассказывается, как можно сделать собственную страницу «Ошибки 404». В сети Интернет на различных сайтах и форумах существует множество примеров по созданию сообщения об ошибке. Мы предлагаем Вам наиболее удобный, на наш взгляд.

Итак, стандартный файл error.php выглядит так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>"<br />lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"><br /><head><br /> <title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title><br /> <link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/error.css"
type="text/css" />
<?php if($this->direction == 'rtl') : ?>
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/system/css/error_rtl.css"
type="text/css" />
<?php endif; ?>
</head>
<body>
<div align="center"><br /> <div id="outline"><br /> <div id="errorboxoutline"><br /> <div id="errorboxheader"><?php echo $this->error->code ?> - <?php echo $this->error->message ?><br /></div><br /> <div id="errorboxbody"><br /> <p><strong><?php echo JText::_('You may not be able to visit this page because of:'); ?><br /></strong></p><br /> <ol><br /> <li><?php echo JText::_('An out-of-date bookmark/favourite'); ?></li><br /> <li><?php echo JText::_('A search engine that has an out-of-date listing for this site'); ?></li><br /> <li><?php echo JText::_('A mis-typed address'); ?></li><br /> <li><?php echo JText::_('You have no access to this page'); ?></li><br /> <li><?php echo JText::_('The requested resource was not found'); ?></li><br /> <li><?php echo JText::_('An error has occurred while processing your request.'); ?></li><br /> </ol><br /> <p><strong><?php echo JText::_('Please try one of the following pages:'); ?></strong></p><br /> <p><br /> <ul><br /> <li><a href="/<?php echo $this->baseurl; ?>/index.php"
title="<?php echo JText::_('Go to the home page'); ?>"><br /> <?php echo JText::_('Home Page'); ?></a></li><br /> </ul><br /> </p><br /> <p><?php echo JText::_('If difficulties persist, please contact the system administrator of this <br />site.'); ?></p><br /> <div id="techinfo"><br /> <p><?php echo $this->error->message; ?></p><br /> <p><br /> <?php if($this->debug) :<br /> echo $this->renderBacktrace();<br /> endif; ?><br /> </p><br /> </div><br /> </div><br /> </div><br /> </div><br /> </div><br /></body><br /></html></div> <p>Открываем в админке Joomla менеджер материалов и создаем новую статью. Оформляем своё сообщение об «Ошибке 404», пишем свой текст, вставляем свои изображения... Затем, в редакторе отключаем сам редактор и перед вами появится код. Копируем этот код. Теперь возвращаемся в наш стандартный файл error.php и находим следующий код, который привязывает файлы стилей:</p> <div class="textcode"><head>
<title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title>
<link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/error.css"
type="text/css" />
<?php if($this->direction == 'rtl') : ?>
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/system/css/error_rtl.css"
type="text/css" />
<?php endif; ?>
</head>

Вам нужно закомментировать весь этот код или просто удалить его. После этого находим следующий код:

<p><strong><?php echo JText::_('You may not be able to visit this page because of:'); ?>
</strong></p>
<ol>
<li><?php echo JText::_('An out-of-date bookmark/favourite'); ?></li>
<li><?php echo JText::_('A search engine that has an out-of-date listing for this site'); ?></li>
<li><?php echo JText::_('A mis-typed address'); ?></li>
<li><?php echo JText::_('You have no access to this page'); ?></li>
<li><?php echo JText::_('The requested resource was not found'); ?></li>
<li><?php echo JText::_('An error has occurred while processing your request.'); ?></li>
</ol>
<p><strong><?php echo JText::_('Please try one of the following pages:'); ?></strong></p>
<p>
<ul>
<li><a href="/<?php echo $this->baseurl; ?>/index.php"
title="<?php echo JText::_('Go to the home page'); ?>"><br /> <?php echo JText::_('Home Page'); ?></a></li><br /> </ul><br /> </p><br /> <p><?php echo JText::_('If difficulties persist, please contact the system administrator of this <br />site.'); ?></p><br /> <div id="techinfo"><br /> <p><?php echo $this->error->message; ?></p><br /> <p><br /> <?php if($this->debug) :<br /> echo $this->renderBacktrace();<br /> endif; ?><br /> </p></div> <p>и вместо вышеуказанного кода вставляете свой код, который Вы создавали ранее. Сохраняем в utf-8. И теперь в браузере набираем http://адрес_вашего_сайта/абра_кадабра. Вот Вы видите свою собственную страницу «Ошибка 404».</p> </div> </div>"


Сокрытие признаков Joomla! - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.

Блог

Календарь приёма объявлений

Небольшой пример из повседневной практики. Организация меняет реквизиты, и они вступят в силу через  пару недель. На сайте идет приём объявлений и объявления принимаются на несколько месяцев в...

Дырка в com_content

Сегодня у товарища, сайт которого находится на старой  Joomla 1.0.3, была сильная нагрузка на сервере, просматривая логи обнаружил не вежливый запрос такого порядка: http://сайт/index2...

Лечим вирус на сайте

  Первоначальный осмотр сайта обнаружил, что у клиента закрыт доступ по фтп, что сузило круг подозреваемых уязвимостей, стало быть отверстие в какомто скрипте движка joomla. Касперский яро...

Troj/JSRedir-MH

Снова грянул гром зарежения сайтов новым вирусом  Troj/JSRedir-MH.  И так в коротко по вирусу Troj/JSRedir-MH. Вирус или троян куда интереснее чем свои предшествиники, тепер...

Доработка расширения для рассылки Send Email JK

Сегодня поделюсь немного интересной информацией для владельцев сайтов собранных ан joomla.  Рано и поздно возникает задача подписки и рассылки информации с сайта, это может быть разная постановка зада...

Привет Ie 10 регулярка

И вот и мне пришлось столкнулся с проблемами перехода на win 8 в придачу с ie 10, некоторых постоянных пользователей моих сайтов. На многих сайтах  имеющих раздел по приёму объявлений, использ...

Kunena заменяем ссылку на профиль пользователя

Всем привет, снова снова кунена, получил задание на допиливание популярного форума Kunena, сегодня потребовалось поменять ссылку на профиль пользователя. Это связано с тем, что на сайте стоит социа...

Работает на Kunena - зачем на каждой странице?

  Все у кого стоит форум kunena мешает надпись с двумя ссылкам внизу форума "Работает на Kunena". Сея надпись висит на каждой странице форма, а также страница разработчиков содержит множество вн...

Kunena избавимся от лишних quote

Для тех кто действительно делает сайт для людей, моя следующая заметка. Расскажу вам, как избавиться от лишних quote в постах на форуме kunena. У меня несколько тематических сайтов с нормальной посеща...

Kunena решаем проблему с пропажей аватаров

Так и вот мы обновись до последней версии кунены, сразу видно компонент внутри сильно изменился, и вот незадача у некоторых пользователей пропали аватары, физически они есть но неотображаются. ...

Джомлавикам

Обработка параметров расширений joomla

При разработке расширений для CMS Joomla, таких как плагины, модули, компоненты или шаблоны, часто возникает необходимость получить параметры разрабатываемого или любого другого расширения. В этой ...

Кunena крамсаем шаблон

1. В папке \components\com_kunena\template\ваш_шаблон\ находим файл template.xml и вставляем в него такой кусок (чтобы была возможность выбора показывать это поле или нет): <param name="l...

Подключить свои классы и методы в Joomla?

Иногда случается, что набор собственных функций или библиотек нужно подключить в Joomla. Но иногда подключить их нужно так, чтобы они присутсвовали во всей системе, вне зависимо...

3 новых полезных класса в Joomla 2.5

В платформе Joomla 11.3 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информац...

Репозиторий файлов на Joomla средствами Apache

Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем. ...