FlexCore - Хороший понт дороже денег

Тема в разделе "Защита и взлом", создана пользователем stealthdebuger, 7 янв 2015.

  1. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    FlexcoreCMS. Разработчики:
    Девиз:
    Слоган:
    Весьма претенциозный проект. Текущая версия 1.1, но уже был представлен на RIW 2014. Кроме того, специалисты компании BDBD, высоко оценили степень подготовки системы к эффективному поисковому продвижению. Система получила статус SEO Friendly, как продукт идеально подходящий для эффективного продвижения в интернете.

    Ну что, дифирамбы пусть и дальше поют разработчики, а мы начнем рассматривать его более пристально.
    В своей жизни я сталкивался с очень многими действительно высококвалифицированными программистами и никто из них, никогда, даже в шутку, не позволит себе оставить в КОММЕРЧЕСКОМ продукте такие "шутки":
    PHP:
    die('н***й <a href="http://natribu.org/">здесь</a>');
    Простите, не серьезно и попахивает неудовлетворенными амбициями. А уж если вспомнить старину Фрейда, то...
    Так, главное не читать комментарии. Тем более, что в комментариях столь велико количество орфографических ошибок, что забываешь что перед тобой коммерческий продукт, а не очередное "ваяние" "на коленке" очередного новоявленного гуру. А может русский язык не является для них родным?

    Что касается безграничного функционала. Не будем требовать многого, просто бегло пробежимся по демо-версии, затем заглянем на страничку План обновлений Flexcore CMS на 2014 год и вспомним какой сейчас год.
    Производительность, которая невероятная. Особенно учитывая подгрузки библиотек с code.jquery.com и известные подтормаживания для UI.
    Другим показателем невероятной производительности является попытка создать репозиторий. Не знали, да? А между тем, это довольно интересная и действительно уникальная особенность FlexcoreCMS. Если вы сделали свой выбор и используете лицензионную версию данной CMS, знайте. Большая часть подгружаемых javascript, стилей и картинок, как для frontend, так и backend, подгружается с внешнего сервера. Не вашего, чужого. С так называемого "репозитория" от разработчиков. Вы знаете, о чем это говорит, да? ;)
    Кроме того, при каждом обращение к любой странице (сайта или его админке), прежде идет процедура "пинга":
    PHP:
        public function ping_repository(){//пингуем репозитории пока кто-нить из них не отзовётся
            
    $errCode $errStr '';
           
            foreach (
    $this->repository as $host){
               
                if (@
    fsockopen($host80$errCode$errStr1)){
                   
                    
    $this->repo 'http://'.$host.'/';
                   
                    break;
                }
            }

            if (!
    defined('REPO')) define('REPO'$this->repo);
           
            
    $this->js $this->repo.$this->js;
            
    $this->css $this->repo.$this->css;
           
           
            return 
    $this->repo;
        }
    Тем, кто не понимает код советую обратить внимание весьма красноречивый на комментарий от разработчиков
    Тоесть, если вдруг ни один из репозиториев не откликнется, то и ваш сайт работать не сможет.
    Закроем глаза на потерю производительности, отсутствие кеширования как для данного действа, так и для подгружаемых с репозитория файлов. Вроде бы неплохо, три репозитория дают весьма высокие шансы на то, что хотя бы один из них откликнется. И даже ограничили timeout для пинга, но смущает тот момент, что все три репозитория находятся в одной подсети 188.127.255.x. Вы понимаете, о чем это говорит, да? ;)

    Высочайший уровень безопасности. Вспоминаем, откуда подтягивается часть скриптов?
    Да ладно, не думайте что разработчики просто так вас в покое оставят, они не остановятся на одной плюшке.
    Есть одна интересная особенность. Разработчики очень постарались и предоставили возможность обновления системы "одной кнопкой". Потому, я настоятельно прошу вас, при установке данной CMS не называйте свою базу `cms`! В противном случае ваша база данных всегда будет доступна для посторонних. Как, к примеру, вот установочная база одного из клиентов-партнеров http://lorelei.ru/admin/updater/dump.txt Вроде как не страшно, но видя там 'admin','ac2f3bc09417eec21c554ad1560d1402','WB&meo>=.>' и зная, что хеш пароля задается как md5(md5($password).$salt), при известной соли не всегда большого труда составит узнать какой именно пароль админа.
    К счастью, у них база называется не `cms`, потому запрос отдающий актуальный дамп http://lorelei.ru/admin/updater/dump.php выдает ошибку, но... Приводит к раскрытию путей, что зачастую тоже бывает полезным.
    Здесь же вы можете полюбоваться упомянутым мной ранее выражением http://lorelei.ru/admin/updater/files.php
    Правда, если по указанному пути передать некий post-запрос, то можно и получить бесплатные обновления с оф.сайта, либо слить какие-то надстройки у их клиентов. Благо, разработчики не сочли снизойти до низменных мануалов и узнать, что
    В противном случае их процедура получения файлов не выглядела бы таким образом:
    PHP:
            foreach ($this->files as $file){
               
                if (
    is_file($file)){
                   
                    
    $hash md5_file($file);
                   
                    if (isset(
    $_POST['file'])){
                       
                        if (
    in_array($hash$_POST['file'])) $this->response['data'][$hash] = array('file' => str_replace($_SERVER['DOCUMENT_ROOT'], ''$file), 'content' => file_get_contents($file)); 
                       
                    }else 
    $this->response['data'][$hash] = array('file' => str_replace($_SERVER['DOCUMENT_ROOT'], ''$file), 'time' => filemtime($file));
                }
            }
    Вы догадались, о чем это говорит, да? ;)

    Еще пара неприятных моментов при установке лицензионного скрипта. Прежде всего - требование разрешенной exec на вашем хостинге. Обусловенно это лишь тем, что разработчики при установке и обновлениях CMS используют exec для извлечения из получаемых архивов, да ресайза картинок.
    Их воля, конечно, но корректную и качественную обработку картинок можно на основе GD, не прибегая к такому монстру как ImageMagick. Кроме того, хорошо позволяет экономить ресурсы и повышает производительность работа с потоками.
    PHP:
    file_get_contents('compress.zlib://http://site.ru/arc.gz');
    Не летаем в облаках, а курим маны, ребята http://php.net/manual/ru/wrappers.compression.php

    Также, во время установки скрипта может возникнуть проблема с проверкой требований к MySQL. Здесь речь идет о правах на создание хранимых функций.
    К моему сожалению, разработчики не задались вопросом: а что будет, если в настройках MySQL включено бинарное логирование? А будет вам ошибка Mysql Error: 1418. Потому, что создаваемая при проверке хранимая функция не вносит никакие изменения, что недопустимо для log-bin=mysql-bin.
    Решается данная проблема либо отключением бинарного логирования (что не всегда возможно или допустимо), либо... явным указанием DETERMINISTIC при создании функции.
    Также, при установке на некоторых хостингах могут возникнуть проблемы в момент импорта в базу.
    Возникает ошибка #1607 Cannot create stored routine [имя_процедуры]. Check warnings. Это баг в некоторых версиях MySQL, который заключается в том, что ошибка возникает при вставке комментариев. Решается, соответственно, путем удаления комментария у хранимых функций.

    Что еще можно сказать о высочайшем уровне безопасности? Без данного уровня безопасности было бы невозможным появление этого релиза FlexCoreCMS

    Вместо эпилога. Надеюсь, вскоре выпустят новую версию, в которой будут исправлены данные огрехи и мы сможем вас порадовать новым релизом.
    Да, ребята, здесь представлена далеко не вся информация, и очень многое ждет своего часа ;)
     
    Последнее редактирование модератором: 6 май 2015
    ultra, bububu, dmx и 10 другим нравится это.
  2. autos

    autos

    Регистр.:
    14 июл 2007
    Сообщения:
    184
    Симпатии:
    48
    конечно проект не идеальный, но гавнокодом его тоже назвать нельзя все чистенько, разбито по модулям. Видно, ребята старались, ошибки кода - как всегда сроки, ограниченное число сотрудников, финансовая сторона. Поэтому я предпочитаю бесплатные продукты типа opencart. :)
     
  3. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    292
    Симпатии:
    224
    Да вы что!! Да он говнокодом стал когда они сделали привязку к серверу! Знаем такие проекты! Он давеча свернется и что делать клиентам? Сайт не перенести, данные не сохранить! Сайт на пару дней - это про них! Для агентства и web-студии - это, точно не вариант!!!

    Ребята просто из разряда "умники" просто срубить бабло! У нас в городе таких полно! И дурной славой соответственно не обделены. Да и с другой стороны и клиенты откровенно дурачье, не смотрят, что подписывают! Вообще плохая тенденция пошла с этими арендами сайтов и т.д.
     
  4. AndreyOL

    AndreyOL Писатель

    Регистр.:
    24 фев 2015
    Сообщения:
    1
    Симпатии:
    1
    От лица веб студии, которая плотно сотрудничает с компанией Flexcore, хочу внести свои пять копеек, так сказать из опыта.
    1. Юмор в коде, меня по крайней мере улыбнул, довольно забавно, сродни пасхалке. Но имхо здесь важно не переборщить;
    2. Улыбнули умозаключения автора про план обновлений на 2014 год в блоге, учитывая что статья написана 7 января 2015 года);
    3. Ошибки в комментарих, да, есть огрехи, но думаю будут лучше, проект новый;
    4. А вот про репозитории готов с автором поспорить, он не особо детально изучил предмет, для того чтобы выдвигать такие умозаключения.
    - Во-первых, в клиентскую часть ничего из репозиториев не попадает, репозитории подключены только для административной части, такое решение не ново и содержит массу плюсов, таких как моментальные обновления стилизации и javascript для админки без каких либо тяжелых манипуляций с обновлениями.
    - Во-вторых, хочу внести ясность по поводу одной подсети.
    Устройство хостинга проекта flexcore, нам хорошо знакомо, т.к. на эту тему у нас партнерские взаимоотношения. Это три физически разных сервера, с разными каналами, в общем они связаны только тем, что располагаются в одном ДЦ. Сильно сомневаюсь что один из крупнейших ДЦ г. Москвы отвалится, только если по нему не планируется точечный ядерный удар);

    + насколько нам известно, flexcore планирует серьезное расширение точек хранения данных.

    В целом хочу сказать что свою основную задачу - быстрое и качественное создание интернет-магазинов и спец проектов flexcore cms выполняет на отлично.
    Никак не соглашусь с высказыванием про не вариант для веб студий, для нашей студии это лучший вариант! Народ вообще способен с головой отдаваться SaaS решениям типа InSales, а Вы тут заподозрили недоброе в репозиториях для админки. В конце концов никто не запрещает перенести ресурсы на свой сервер.

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

    Проблемы есть у всех систем, важно как эти проблемы решаются.
     
    pozhisni нравится это.
  5. vitrolov

    vitrolov Постоялец

    Регистр.:
    10 июн 2012
    Сообщения:
    94
    Симпатии:
    77
    Андрей, вы только Стелсу свои или клиентские сайты не показывайте, поверьте. это добром не закончится для вас
    Ну, конечно, если вы уверены в надежности этой кмс, тогда можете с понтом выложить урлы :)
     
  6. Meberas

    Meberas Создатель

    Регистр.:
    1 мар 2014
    Сообщения:
    10
    Симпатии:
    1
    Надежность и "функционал" этой кмс настолько велик, что один из моих клиентов сбежал на opencart. Его взломали 14 РАЗ! причем все 14 раз через разные уязвимости.
     
  7. Flexcore

    Flexcore Создатель

    Регистр.:
    7 май 2015
    Сообщения:
    6
    Симпатии:
    1
    Перестаньте сочинять и вводить пользователей в заблуждение.
    Нам по любой мелочи пишут в ТП и мы всегда оперативно отвечаем и исправляем ошибки(если такие имеются).
    А вот про ваши 14 раз "взлома" никто не написал.

    Ни одного обращения на эту тему не было.
    Мы держим на контроле большое количество проектов, ни одного случая взлома.

    Расскажите о Вашем фантомном проекте, который сбежал на другую систему, давайте вместе разберем, даже самим интересно.
    Пока только от других систем к нам сбегают.

    Кстати говоря, все что написано в этой статье не имеет ничего общего с текущей версией системы.
     
  8. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Согласен. Могу предложить обзор актуальной версии, если вы будете готовы передать мне её для ознакомления.
    Конечно, при условии того, что данная копия нигде кроме локальной машины использоваться не будет и тем более не будет передана в третьи руки.
     
    latteo нравится это.
  9. Flexcore

    Flexcore Создатель

    Регистр.:
    7 май 2015
    Сообщения:
    6
    Симпатии:
    1
    Готовы. Напишу вам в личку о передачи версии на обзор.
     
  10. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    На днях я получил отзыв на свое предложение от представителя команды Flexcore, который поддержал мою инициативу и старался создать мне условия для максимально полного ознакомления с их последней, на сегодняшний день, версией CMS.
    Пройдя по ссылке http://flexcore.ru/flexcore-online/ я скачал скрипт-установщик и первым делом принялся за изучение его. Здесь же меня постигло и первое разочарование.
    В своем первом обзоре https://www.nulled.cc/posts/2366597/ я уже говорил о том, что нет необходимости заставлять своих пользователей понижать безопасность сервера и требовать разрешенной на сервере exec(), привел в пример враперы, дал ссылки на документацию, но...
    Кроме того, проверка exec() проводится таким образом
    PHP:
            exec("pwd"$system);
            if  (!
    $system $problems[] = array('Запрещен exec','Необходимо разрешить использование функции exec');
    Данный метод не всегда и не везде работает корректно. Я проводил установку на OpenServer 5.2.2 с дефолтными настройками PHP5.3 & MySQL 5.2.2. По умолчанию exec() отключен, но после того, как я внес изменения в php.ini и перезапустил сервер, скрипт-установщик продолжал ругаться. Процесс пошел дальше лишь после того, как я закомментироал приведенные выше строки проверки, система была распакована и благополучно установлена.
    Также не обратили внимание на мои слова о проблемах с включенным бинарным логгированием MySQL, хотя данная проблема решается всего лишь добавлением DETERMINISTIC перед созданием функции.

    Итак, система установлена. Зашел на сайт, прешел в админку. Первые впечатления - система работает значительно быстрее прежней версии. Более удобным показалось меню в админке, значительно расширен функционал. Но меня всегда больше интересует "изнанка", потому оставив всякие визуальные плюшки благодарным пользователям, я полез в дебри кода.
    Первое что хотелось бы отметить - наличие текстов, уведомлений, сервисных сообщений в тексте исполняемых файлов. Ребята, это давно уже стало моветоном, не говоря уж о лишней работе, когда вы решите добавить мультиязычность своей CMS.
    Не смог пройти мимо папки ajax, открыл один файл, потом второй, посмотрел... Кхм. Вы слышали об Email Header Injection? Видимо нет, в противном случае вы бы отфильтровали переменные, в том числе HTTP_HOST и HTTP_REFFERER а не отправляли их напрямую в формируемый email.

    Каптча. Вроде как и какая-никакая защита, но если ее грамотно использовать. В данной каптче нет проверок откуда вызывается скрипт, первый раз он вызывается или повторно, что дает возможность злодеям дергать ее, загонять в распознавалку до положительного результата и затем двигаться дальше.

    Заметил прекрасный файловый менеджер ElFinder 2.0, эксплоит под который имеется в свободном доступе, к примеру здесь https://packetstormsecurity.com/files/131794/elFinder-2-Remote-Command-Execution.html

    Собственный шаблонизатор с некоторыми приятными, на мой взгляд, "плюшками" порадовал уязвимой функцией content(), использующей extract() для входящих не во всех случаях фильтрованных аргументах.

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

    Дальше мне стало скучно, плюс сказываются вторые сутки без сна, потому прервал свое ознакомление и решил подвести итоги.
    В целом, не смотря на всё вышесказанное, система явно развивается и идет вперед. Радует тот факт, что разработчики, хоть и скрипят зубами, но все же воспринимают критику, стремясь сделать свою разработку действительно достойной тех слов, которые о ней сказаны на их сайте.
     
    Последнее редактирование: 11 ноя 2015
    latteo, Amazko, dmx и 2 другим нравится это.