Критическая уязвимость в MODX Revolution

Сильно в детали лезть не буду, просто скажу, что сейчас любой MODX Revo сайт потенциально уязвим. Дыра позволяет выполнить SQL-инъекции, в том числе с созданием на сайте привилегированных пользователей.
Базовые методы противодействия: подмена дефолтных системных папок (особенно connectors) и, главное — смена префикса таблиц. Так как далеко не все это делают, то можно сказать, большинство сайтов в зоне опасности. Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.

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

P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
Николай Ланец
05 ноября 2016, 07:50
15
20 051
+31

Комментарии: 340

Василий Наумкин
05 ноября 2016, 10:54
+5
Мой способ — настройка базовой авторизации через веб-сервер.

Это запрещает любые запросы в manager, core и connectors без дополнительного логина и пароля, которые проверяет не MODX на PHP, а сам Nginx.

Запрет по IP, конечно, еще лучше.
    Антон Фомичёв
    05 ноября 2016, 12:31
    0
    С удовольствием, кстати, использую везде, где у меня modx. Спасибо за идею!
    Николай Ланец
    05 ноября 2016, 13:42
    +9
    Василий, это одно из средств, которое позволяет закрыть пару дверей, но не решает проблему в принципе. Проверь в модсторе, не судо ли я там? Подозреваю, что уже. Во всяком случае я сумел себе fullname сменить и модифицировать один из своих документов. Это как раз стало возможно из-за того, что у тебя базовые префиксы используются. Да, я не могу зайти в админку, так как она закрыта, но я запросто могу сейчас создать сниппет, который при заходе на страницу сработает, сделает копии папок манагер и коннекторс, и там уже не будет двухфакторной. Или просто тупо шелл создаст.
      Василий Наумкин
      05 ноября 2016, 14:12
      -4
      Я прекрасно понимаю твою радость, но будь добр не лазить на чужие рабочие проекты.
        Николай Ланец
        05 ноября 2016, 14:15
        +11
        Речи нет о радости. Речь есть о реальных проблемах в безопасности. Я всего лишь показал наглядно, так как ты не часто прислушиваешься к словам.
        В общем, проблему я обозначил, а тебе уже решать исправлять ее или нет.
          Василий Наумкин
          05 ноября 2016, 14:19
          0
          Так ты тогда хоть напиши где именно проблема.
          Потому что менять префиксы на всех MODX сайтах мне совершенно не улыбается.

          По логам вижу, что ты долго долбился на коннектор от Office, видимо опять что-то с переключением контекстов. Если так — то мне как минимум нужно исправить свои компоненты, которые много где уже установлены.
            Николай Ланец
            05 ноября 2016, 14:26
            +2
            Это все та же проблема с префиксами (ссылка на статью в топике написана). Проблему модификации SQL-запросов практически не реально решить, так как много где принимаются извне параметры типа where, limit, sort, dir и т.п., потому вопрос как именно запрос прошел — не актуален (хотя да, с контексами я тоже проблему нашел, но это не относится именно к твоему случаю). Вопрос в том, что чтобы воспользоваться данной уязвимостью, надо знать префикс таблиц, так как надо выполнить запросы типа update table_name… Не зная префикса, нельзя указать корректное название таблицы. Без этого атаку не провести. Поэтому я и говорю: указывайте сложные префиксы для таблиц, будет гораздо гораздее.
              Василий Наумкин
              05 ноября 2016, 14:59
              +1
              Прекрасно.

              Впервые серьёзно жалею, что работаю с MODX.
                Николай Ланец
                05 ноября 2016, 15:04
                +6
                Да не надо жалеть. Уязвимости есть везде, тем более там, где есть передаваемые параметры. Другое дело, есть возможность решить проблему или нет. Здесь эта возможность есть. Хотя с коннекторами там сейчас все очень плохо. Есть мысли как улучшить защищенность MODX-а, но это довольно серьезные трудозатраты. Может в будущем.
                  Владимир
                  05 ноября 2016, 17:40
                  0
                  Николай, я правильно понял, что для атаки требуется минимальный хоть и урезанный но админ доступ?
                    Николай Ланец
                    05 ноября 2016, 17:42
                    +2
                    Нет. Я нашел способ без каких-либо прав. Точнее методов значительно больше, чем один, но все они сводятся к необходимости знать названия таблиц (с учетом префиксов).
                      Владимир
                      05 ноября 2016, 17:47
                      0
                      OMG
                      Печально.
                      У меня хоть на важном для меня сайте префиксы изменены, но их длина и сложность не ахти.
                      Т.е. бежать кругом дистрибутив advanced заливать и менять все и вся…
                      Николай Ланец
                      05 ноября 2016, 17:49
                      0
                      Т.е. бежать кругом дистрибутив advanced заливать и менять все и вся…
                      А что, advanced умеет менять префиксы таблиц на готовом сайте? То есть переименовывать их?
                      Владимир
                      05 ноября 2016, 17:51
                      0
                      При установке, да, в ином случае не приходилось, но вроде предлагает при обновлении (или нет?).
                      PS Скрипт смены префиксов видел на modxclub еще утром.
                      Николай Ланец
                      05 ноября 2016, 17:59
                      0
                      В xPDO метод обновления таблиц не дописан, так что вряд ли есть возможность при обновлении сайта обновить им таблицы.
                      Владимир
                      05 ноября 2016, 18:04
                      0
                      Но ведь предлагает при расширенном обновлении поменять префикс. Сейчас завершу на пробном сайте напишу.
                      Николай Ланец
                      05 ноября 2016, 18:20
                      +1
                      Нифига не проходит joxi.ru/nAyz3VMFX8kDRr
                      Владимир
                      05 ноября 2016, 18:23
                      0
                      Ага, только что тоже самое получил.
                      Ранее расширенные настройки воспринимал как такую возможность, но она не требовалась так срочно, а сейчас оказалось что расширенные настройки при обновлении ни чего не позволяют толком поменять. Печаль (.
                      Николай Ланец
                      05 ноября 2016, 18:25
                      +4
                      Скрипт я написал, с ним не должно возникнуть никаких проблем.
                      Владимир
                      05 ноября 2016, 18:30
                      +1
                      Спасибо, видел этот скрипт еще утром. Пошел ставить консольку и менять все и вся. Пока за пределами MODHOST, ибо полагаю, что Василий добавит опцию смены префикаса таблиц. Генерацию кастомного префикса при создании нового сайта он уже добавил.
                      Владимир
                      05 ноября 2016, 18:20
                      0
                      Да, advanced, предлагает при обновлении внести изменения в настройки базы данных, но на самом деле все не так)
                      Проверка базы данных: Нет такого префикса таблиц в базе данных!

                      Видимо задумывалось как возможность, но не доделано.
                      Николай Ланец
                      05 ноября 2016, 18:21
                      +1
                      Видимо задумывалось как возможность, но не доделано.
                      Если под капот залезть, там много чего можно найти из того, что задумывалось, но не доделалось))
                  Сергей Шлоков
                  05 ноября 2016, 17:50
                  +1
                  Поменять префикс у сайта дело 5 минут, если не торопится. Единственный небольшой неудобств — обновление версии. Для пользователей хостинга modhost.pro вообще ужас ужас. ))
                  Решение. Сделать сниппет с кодом Николая (я где-то год назад давал пример файла с таким же кодом) и перед обновлением вызывать его, чтобы переименовать таблицы с префиксом modx_, а после обновления возвращать опять свой уникальный.
                  Как мечта — сделать на modhost.pro, чтобы префикс при обновлении или автоматически подцеплялся из файла настроек или запрашивать его у пользователя.

                  В MODX параметры запроса фильтруются. Может ужесточить правила и вырезать нахрен слова «insert», «update» и «delete» из запроса?
                    Николай Ланец
                    05 ноября 2016, 18:01
                    0
                    Для пользователей хостинга modhost.pro вообще ужас ужас. ))
                    А там в чем проблема? Раз изменить префикс таблиц, потом обновление MODX-а же проходит с учетом префикса.
                      Сергей Шлоков
                      05 ноября 2016, 18:06
                      0
                      Разве? Насколько я помню, Василий писал, что обновление работает только для префикса modx_. Поэтому я когда переехал на modhost вернул таблицам стандартный префикс, чтобы пользоваться этой возможностью.

                      А вырезать из параметров запроса команды sql поможет решить проблему безопасности?
                        Николай Ланец
                        05 ноября 2016, 18:12
                        0
                        Разве? Насколько я помню, Василий писал, что обновление работает только для префикса modx_.
                        Это уже у Василия надо спрашивать. Сам MODX при обновлении учитывает префиксы. Более того, даже если взять Vapor, то можно снять снимок, создать новый сайт с кастомным префиксом, накатить на этот сайт созданный пакет, и все таблицы будут созданы и/или обновлены с учетом префикса.

                        А вырезать из параметров запроса команды sql поможет решить проблему безопасности?
                        Поможет. Но как отличить опасный запрос от не опасного? К примеру, здесь кто-то захочет найти статьи по запросу «xPDO update», и что ему выдавать? А что делать с запросами uupdatepupdatedupdateaupdatetupdatee? Рекурсивную чистку писать? Короче, это все заморочки лишние.
                        Сергей Шлоков
                        05 ноября 2016, 18:19
                        0
                        К примеру, здесь кто-то захочет найти статьи по запросу «xPDO update», и что ему выдавать?
                        Мда.
                        Но как решение для базовой версии можно сделать такую настройку. Например, сейчас есть такая настройка «Разрешить передачу HTML тегов в POST запросах». А сделать еще типа такой — «Вырезать команды SQL». Если у пользователя простой сайт, то по крайней мере, он будет в безопасности. Поставил MODX и спит спокойно.
                        А если сайт использует запросы, то граммотный программист должен отключить эту настройку и переименовать таблицы. Как вариант.
                        Николай Ланец
                        05 ноября 2016, 18:23
                        0
                        Это все слишком сложно.
                        Сергей Шлоков
                        05 ноября 2016, 18:25
                        0
                        Авторам MODX можно подсмотреть как это сделано у других.
                      Николай Ланец
                      05 ноября 2016, 18:09
                      0
                      В MODX параметры запроса фильтруются. Может ужесточить правила и вырезать нахрен слова «insert», «update» и «delete» из запроса?
                      Я не сторонник совсем все закрывать, так как сам часто пишу сложные не стандартные запросы, а с этим в xPDO итак все сложно, и если на уровне xPDO-запросов все будет закрыто, то это меня не будет радовать. Так что я буду просто менять префиксы.
                      Василий Наумкин
                      05 ноября 2016, 18:44
                      +1
                      Для пользователей хостинга modhost.pro вообще ужас ужас. ))
                      И не говори!

                      Вообще непонятно, как дальше жить. Думаем закрываться теперь.
                        Сергей Шлоков
                        05 ноября 2016, 18:51
                        0
                        Вообще Марк и вся команда должны Николаю коньяк ИкСо подогнать за такое.
                          Василий Наумкин
                          05 ноября 2016, 18:54
                          0
                          Дождёшься от них, держи карман шире.

                          Евгения Борисова, помню, в итоге вообще обматерили.
                          Сергей Шлоков
                          05 ноября 2016, 18:57
                          0
                          Потому что он выложил в открытый доступ дыру.
                          Уверен на 100%, что данной дырой серьёзные пацаны уже давно пользовались.
                          Интересно, а в том же WP эта дырка закрыта?
                          Василий Наумкин
                          05 ноября 2016, 19:12
                          0
                          Ну, иначе высокое руководство не считало те дыры — дырами, и отмахивались, мол так и задумано.
                          Пришлось доказывать на их же сайте.

                          И, насколько я помню, Евгений еще далеко не всё показал. Не удивлюсь, если и про сегодняшний баг он давно в курсе, просто стимула рассказывать авторам MODX больше нет.
                          Сергей Шлоков
                          05 ноября 2016, 19:20
                          +1
                          Я тогда очень удивился легкомысленности авторов MODX.
                          Сергей Шлоков
                          06 ноября 2016, 08:48
                          0
                          Евгения Борисова, помню, в итоге вообще обматерили.
                          ...
                          Ну, иначе высокое руководство не считало те дыры — дырами, и отмахивались, мол так и задумано.
                          Пришлось доказывать на их же сайте.
                          Кстати, пока Николай не залез к тебе, ты тоже отмахнулся. И ответная реакция у тебя тоже практически матерная.
                          Василий Наумкин
                          06 ноября 2016, 08:53
                          0
                          Кстати, на тот момент считалось, что доступ в админку необходим и мой способ вполне себе работает.

                          А вот чуть позже Николай залез без админки, и сразу на рабочий проект и написал UPD2 у себя в заметке.

                          И еще кстати — в текущей заметке этого UPD2 до сих пор нет. Как считаешь, большая ли разница, когда для эксплуатации уязвимости нужен доступ в админку, а когда нет?

                          Но а так да, всё один в один, прям идентичные ситуации.
                          Сергей Шлоков
                          06 ноября 2016, 09:06
                          0
                          Могу ошибаться, но по-моему, вот это было изначально в статье.
                          Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.
                          Про доступ в админку тут не слова. Лично мне было интересно проверить, но я не рискнул. Страшновато.
                          Василий Наумкин
                          06 ноября 2016, 09:11
                          +1
                          Да я вроде тоже не предлагал демонстрировать это на моих проектах, не правда ли?

                          Но Николая это не остановило.
                          Николай Ланец
                          06 ноября 2016, 09:25
                          +1
                          Ну я вроде и не сломал ничего, так, чуть себя подправил да документ один свой… Ну и чуть больше о структуре магазина узнал (только в плане какие типы сущностей используются, не более).
                          Василий Наумкин
                          06 ноября 2016, 09:56
                          0
                          В общем, произвёл взлом чужого сайта в личных целях, молодец.

                          Хоть бы сообщество ломал, а не магазин, который приносит доход и тебе, в том числе.
                          Николай Ланец
                          06 ноября 2016, 10:14
                          +1
                          Василий, я никому не навредил, и ничьи данные даже не смотрел (только свои). Я даже не смотрел сколько там пользователей у вас. Вообще ничего такого.
                          Сергей Шлоков
                          06 ноября 2016, 09:45
                          +3
                          Да я вроде тоже не предлагал демонстрировать это на моих проектах, не правда ли?
                          Как и авторы MODX. Но там ты встал на сторону Евгения, а тут на противоположную. Непоследовательно.
                          Одно дело у меня на сайте пошалить, а другое дело обратить внимание человека, на котором лежит большая ответственность — у многих из нас сайты размещаются на modhost.pro, который работает на MODX, и это вызывает обоснованное беспокойство.
                          Владимир
                          06 ноября 2016, 09:50
                          +1
                          а тут на противоположную.
                          Ну, а результатом то явилось улучшении безопасности :)) За что Николаю спасибо!
                          Василий Наумкин
                          06 ноября 2016, 09:54
                          +2
                          Сережа, ты по-русски не понимаешь?

                          Еще раз: на момент публикации моего комментария не было известно, что для эксплуатации уязвимости не нужен вход в админку.

                          Достаточно было дописать в заметке, что уязвимость можно эксплуатировать хоть откуда, и всё. Я не просил её доказывать, я не отмахивался от неё. Мы её и по почте обсудили с Николаем — и там он тоже не сказал, что доступ в админку уже не нужен.

                          Наверное, это недоработка Николая, что он недостаточно рассказал о серьёзности проблемы.

                          P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
                          И что, блин? Это вообще теперь не имеет никакого смысла, если любой сайт можно сломать хоть откуда, если у него стандартный префикс таблиц.

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

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

                          С моей стороны вопрос решен, дальше дело за ребятами из MODX.
                          Сергей Шлоков
                          06 ноября 2016, 10:05
                          +2
                          Но если ты считаешь, что я отмахнулся от проблемы и повёл себя как мудак — твоё право.

                          Николай Ланец
                          06 ноября 2016, 10:13
                          +1
                          И что, блин? Это вообще теперь не имеет никакого смысла, если любой сайт можно сломать хоть откуда, если у него стандартный префикс таблиц.

                          Более того, префикс таблиц теперь приравнивается к паролю супер-админа, его нужно хранить за семью печатями! Вот что нужно было написать, а не как сейчас.
                          Вот тут оговорочка — смысл есть. Дело в том, что пока патч не примут (и пока не обновятся до последней версии), префикс можно будет тупо получить из настроек системы. Сейчас процессор жестко проверяет на авторизацию в mgr, нельзя тут переопределить контекст. А если пользователь авторизован в mgr, то он может получить настройки, в том числе и префикс таблиц.
                          Владимир
                          06 ноября 2016, 10:16
                          0
                          Василий, скажи, сейчас тут сайт/manager/?a=system/info виден префикс, и если не с суперадминскими правами, то ли есть вариант попасть залогиненному в админку на данную страницу?
                          PS прочел коммент Николя ниже… о получении префикса из системных настроек. Вопрос снят…
                          Николай Ланец
                          06 ноября 2016, 10:23
                          +2
                          сайт/manager/?a=system/info виден префикс
                          Это защищенный процессор, надо иметь админские привилегии.
                          Евгений Борисов
                          06 ноября 2016, 17:50
                          +5
                          Я так и не понял чем смена префикса вас обезопасит
                          SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users'
                          Василий Наумкин
                          06 ноября 2016, 18:18
                          0
                          Хороший вопрос.

                          Надеюсь, что результат выполнения запроса увидеть никак нельзя, но я уже ни в чём не уверен.
                          Роман Садоян
                          06 ноября 2016, 18:23
                          +3
                          Евгений, а есть способ защиты от этого?
                          Можно к файлам в connectors перекрыть доступ, но это только, если статический IP у манагеров, админов.
                          Евгений Борисов
                          06 ноября 2016, 18:30
                          +5
                          В свое время я пытался искать пути решения. Но политика разработчиков убила и я плюнул. Они каждый раз просто меняют вектор атаки. В прошлый раз эта уязвимость позволяла подменять контексты и рулить всем сайтом. Они добавили проверку прав доступа.

                          Теперь эта же уязвимость но в другом месте. И опять, все идет по какому-то странному пути — закрывают отображение префикса из конфигов, которые доступны только из админки.

                          Коли так, то вообще всю админу нужно удалять. Не понимаю, зачем делать проверку на расширения доступные к загрузке, если пользователь может переименовать файл!!! Заливаем .jpg и меняем на .php => PROFIT!

                          В общем бред, бред и еще раз бред.
                          Сергей Шлоков
                          06 ноября 2016, 18:47
                          +3
                          Мляха-буха, жаль тут нет смайлика с битьем головой об стену. Вставил бы 20. Чего делать-то?
                          Николай Ланец
                          06 ноября 2016, 18:55
                          +3
                          Не понимаю, зачем делать проверку на расширения доступные к загрузке, если пользователь может переименовать файл!!! Заливаем .jpg и меняем на .php => PROFIT!
                          А, ну это да, есть такое дело)))
                          Николай Ланец
                          06 ноября 2016, 18:33
                          0
                          Я так и не понял чем смена префикса вас обезопасит
                          SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users'
                          Да, такой запрос можно выполнить, но вот увидеть его результаты — очень сложно. Модифицировать запрос так, чтобы подменить ему выводимые колонки — такого не получалось. Получалось только выполнить втемную. А втемную — это уже никак, если не знаешь префиксы. Сам попробуй сломать сайт с кастомными префиксами.
                          Евгений Борисов
                          06 ноября 2016, 18:40
                          +3
                          Сам попробуй сломать сайт с кастомными префиксами.
                          Это сейчас на слабо проверка? Банальный брутфорс по 1 символу.

                          $c = array_merge(range(0, 9), range('a', 'z'), ['-', '_', '.', '@'], range('A', 'Z'));
                          $p = 0;
                          //(SELECT IF(ORD(SUBSTRING(TABLE_SCHEMA,".$p.",1)) = '.ord($c).',1,9999999) FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users' LIMIT 0,1)
                          Николай Ланец
                          06 ноября 2016, 18:54
                          +2
                          Это сейчас на слабо проверка?
                          Никакой проверки на слабо. Я описываю сейчас не теории, а реальный результат. То есть пошел, сломал, написал. Ты сейчас теоритизируешь (при всем моем уважении.)
                          Банальный брутфорс по 1 символу.
                          Если ты вдруг читал исходную статью, то там я писал устанавливать сложные префиксы. Даже немного математики было:
                          Если у вас будет базовый префикс modx_ или какой-то простой типа prfx_, то методом перебора можно будет довольно быстро выполнить атаку (здесь всего примерно 30^4, то есть 810 000. По 10 запросов в секунду за 22 часа можно перебрать все возможные варианты). По этой причине советую сложные префиксы давать типа My_PrfX234_. Здесь уже и маленькие, и большие буквы, и цифры, а это уже 70^10 или 2824752490000000000 вариаций. Вот это уже просто времени не хватит подбирать.
                          Ты сейчас вообще php-код приводишь. То есть предполагается, что твой скрипт будет работать на стороне целевого сервера уже? Если у тебя там php твой работает, то какой смысл? Уже все сломано. А если ты им просто фигачишь запросы на целевой сервер, то с учетом задержек даже идеальных 10 мсек с учетом вычислений выше как быстро ты получишь результат?
                          Евгений Борисов
                          06 ноября 2016, 18:59
                          +1
                          пошел, сломал, написал.
                          Проходили. Даже последствия обсуждали. Спасибо, но пусть я лучше для тебе останусь теоретиком.
                          Николай Ланец
                          06 ноября 2016, 19:05
                          0
                          Спасибо, но пусть я лучше для тебе останусь теоретиком.
                          Ну ОК, не поспоришь))
                          Николай Ланец
                          06 ноября 2016, 10:21
                          +2
                          Кстати, хочешь еще больше жути? Я только что провел успешную атаку через коннектор компонента Gallery. При чем это касается большинства сторонних компонентов. На твоем tickets так же прошло. pdoTools не позволяет. Суть в том, что у них них же тоже коннекторы есть, и они в итоге долбятся в системный коннектор. А там уже и в системные процессоры достучаться можно.
                          И здесь опять-таки, спасают кастомные префиксы таблиц.
                          Николай Ланец
                          06 ноября 2016, 13:18
                          +1
                          На твоем tickets так же прошло. pdoTools не позволяет.
                          К слову, здесь хотел бы показать как я борюсь с подобным. Уже очень давно у меня практика принята все входящие вызовы процессоров проверять жестко. Здесь из коннектора запросы могут идти только на один паблик-процессор, где уже на уровне метода getInstance() решается можно запрошенный процессор выполнить или нет. Да, не очень удобно, зато гораздо надежней.
                          Николай Ланец
                          06 ноября 2016, 09:21
                          +1
                          И еще кстати — в текущей заметке этого UPD2 до сих пор нет.
                          Если эту тему развивать, то там уже надо UPD3, писать, UPD4 и еще несколько. К примеру, помнишь же игры с контекстами, которые тогда Женя проводил, и которые и послужили тем грубым багом, из-за которого сайты массово валили? Это же я тогда Женю консультировал joxi.ru/LmGVQx0uRQbx5r
                          Понятно дело, что он многое сам домыслил и доделал, но сама бага мне была понятна и очевидна, и я про нее говорил Райну тоже, но он действительно отмахнулся, а я не стал развивать тему и ломать им сайт. Так вот, багу не совсем закрыли, точнее, сама архитектура MODX-а такова, что все эти уязвимости во многом являются не багами, а фичами. Это такой механизм безопасности. И уязвимости можно задействовать даже с передачей существующего контекста, если политики не правильно настроены (ведь даже аноним по сути автоматом авторизован в контексте web, а это значит уже НЕ НЕ авторизован). Кстати, что интересно, воспользоваться этим механизмом позволяет как раз JS-компонент MODx, который не сложно подключить даже на фронт сайта просто через редактирование HTML-а, а если можно попасть на входную страницу админки, так вообще проблем нет никаких.
                          По сути, если ты хочешь дать кому-то права на выборки документов и прочих элементов, давать их надо не на контексты, а на конкретные элементы. Но тут проблема в неудобстве сразу встает — если ты хоть кому-то дал права на какие-то группы элементов, значит все остальные сразу лесом пойдут, то есть придется всем остальным так же права прописывать.
                          Есть у меня одна хорошая, но довольно сложная статья, которая несколько проливает свет на все это.
                          А так можно, к примеру, получить список всех сниппетов и плагинов на сайте. Да, модифицировать их не получится, но если проанализировать их кода хорошенько, можно попробовать найти какие-нибудь логические ошибки, особенно там, где используются механизмы формирования ключей для автоматической авторизации пользователей, проведения платежей и т.п.

                          В общем, точек входа довольно много, можно несколько отдельных статей написать про них, поэтому я не стал много воды лить, я просто привел максимально эффективное на мой взгляд решение. Практически все эти проблемы решаются сменой префиксов таблиц и сокрытием папки коннекторов.
                          Это сообщение было удалено
                          Николай Ланец
                          06 ноября 2016, 17:19
                          0
                          Полная переписка — это перемешивание сразу нескольких тем, ну да не важно. Ты таким образом хотел сказать, что мне не была известна эта уязвимость или что именно? Или обсуждение данного вопроса ты не считаешь консультированием?
                          lexikon
                          09 ноября 2016, 11:32
                          0
                          Как скрыть папку коннекторов? если все плагины и расширения передают их в теле документа?
                          Николай Ланец
                          09 ноября 2016, 12:11
                          +1
                          Правильные компоненты пляшут от системных настроек assets_url, connectors_url и т.п. Правите системные настройки и все, все нормальные компоненты должны сменить УРЛы формируемые.
                          Евгений Борисов
                          06 ноября 2016, 18:03
                          +5
                          И, насколько я помню, Евгений еще далеко не всё показал. Не удивлюсь, если и про сегодняшний баг он давно в курсе, просто стимула рассказывать авторам MODX больше нет.
                          Все верно.
                          $modx->getObject('modResource', array(
                              'modResource.id`IN (SELECT 1,1,1,1,1,1,1,1,1,1,1,1,1,1)#' => ''
                          ));
                          А еще есть возможность создания произвольных файлов на сервере.

                          P.S. Да простит меня неуловимый ДЖО и его разработчики:-)))))
                          Василий Наумкин
                          06 ноября 2016, 18:25
                          +1
                          Может поэтому в Eloquent есть отдельно Raw expressions?

                          Вообще, грусть-тоска. Я наивно полагал, что работа через xPDO меня как-то защищает. Очевидно, это всё в прошлом и нужно пересматривать все свои дополнения.

                          Спасибо за PR в pdoTools!
                          Николай Ланец
                          06 ноября 2016, 18:47
                          0
                          $modx->getObject('modResource', array(
                          'modResource.id`IN (SELECT 1,1,1,1,1,1,1,1,1,1,1,1,1,1)#' => ''
                          ));
                          А это что должно делать? Кроме возможности вставить подзапрос на выборку ничего не увидел, а update-запрос здесь не увидел возможность вставить.

                          Кстати, если поиграться с запросом, можно даже такое получить: SQL injection attempt detected.

                          А еще есть возможность создания произвольных файлов на сервере.
                          Есть или была? Я проверял все процессоры на работу с файлами, они защищены. Но может что-то проморгал.
                          Евгений Борисов
                          06 ноября 2016, 18:50
                          +1
                          А это что должно делать? Кроме возможности вставить подзапрос на выборку ничего не увидел
                          Учим матчасть на тему слепой SQL-injection. Кто знает, тот поймет. И да, в коде специально куча ошибок. Это лишь демонстрация общего принципа, чтобы нельзя было копипастом воспользоваться.

                          Кстати, если поиграться с запросом, можно даже такое получить: SQL injection attempt detected.
                          Это фишка хостера
                          Николай Ланец
                          06 ноября 2016, 19:13
                          +1
                          Учим матчасть на тему слепой SQL-injection
                          Хорошо, поверю тебе на слово, что можно в непроцедурный SQL воткнуть какую-то процедуру, чтобы весь перебор прошел на стороне сервера.

                          Это фишка хостера
                          Это фишка xPDO.
                          Евгений Борисов
                          06 ноября 2016, 19:19
                          +1
                          Хорошо, поверю тебе на слово, что можно в непроцедурный SQL воткнуть какую-то процедуру, чтобы весь перебор прошел на стороне сервера.
                          ))))))))) Ок. Пусть это так теперь называется))))

                          Это фишка xPDO.
                          Тогда расходимся. Безопасность на высоте.
                          Николай Ланец
                          06 ноября 2016, 19:23
                          +1
                          Тогда расходимся. Безопасность на высоте.
                          Шутка зачтена))
                          Евгений Борисов
                          06 ноября 2016, 23:48
                          +3
                          Это фишка xPDO.
                          Тогда расходимся. Безопасность на высоте.
                          Обходится эта проверка на раз
                          var_dump([
                                  isValidClause("SELECT 1 UNION SELECT IF(ORD(SUBSTRING(TABLE_SCHEMA,0,1)) = 0,1,9999999) FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users' LIMIT 0,1)"),
                                  isValidClause("SELECT 1 UNION/**/SELECT IF(ORD(SUBSTRING(TABLE_SCHEMA,0,1)) = 0,1,9999999) FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users' LIMIT 0,1)")
                           ]);
                          Николай Ланец
                          07 ноября 2016, 06:56
                          0
                          Вот именно по этому я и говорил выше, что я против слишком серьезной безопасности. Сейчас xPDO даже не позволяет FIND_IN_SET() использовать, приходится тоже исхитряться (типа лишних пробелов :)). И если для обеспечения безопасности надо запретить юнионы — я категорически против. Добавить фильтрацию запросов (типа как это в modX::sanitize сделано) — это я не против. Сам xPDO гайки закручивать — против.
                          Евгений Борисов
                          06 ноября 2016, 18:53
                          +3
                          Есть или была? Я проверял все процессоры на работу с файлами, они защищены. Но может что-то проморгал.
                          Есть. Ищи в phpthumb
                          Николай Ланец
                          06 ноября 2016, 19:04
                          +1
                          Есть. Ищи в phpthumb
                          Его я тоже смотрел. Да, он не сильно защищен в плане авторизации, но он жестко закрыт по экшену, вызывается только его процессор. А там получение только картинок. Может какая проблема есть в самом phpThumb, но я его не очень знаю.
                          Сергей Шлоков
                          06 ноября 2016, 19:06
                          +1
                          Т.е. если никого не пускать в админку и не делать загрузку файлов на сайте можно спокойно спать?
                          Евгений Борисов
                          06 ноября 2016, 19:08
                          +5
                          Спокойно спать можно если не делать сайты на MODX)). По сабжу — не юзать phpthumb, не юзать getObject без валидации данных, не пускать в адинку, экранировать modx теги, и бла-бла-бла…
                          Сергей Шлоков
                          06 ноября 2016, 19:11
                          0
                          Спокойно спать можно если не делать сайты на MODX)).
                          А на чём? Ларавел? Несколько лет назад также говорили про джумлу и WP.
                          Евгений Борисов
                          06 ноября 2016, 19:13
                          +1
                          А на чём? Ларавел?
                          Каждый выбирает сам. Свой путь я выбрал. Тему MODX мониторю просто чтобы не выпадать из тренда, но уже не принимаю никаких действий как разработчик.
                          Николай Ланец
                          06 ноября 2016, 19:15
                          +4
                          Я останусь на MODX. Мне он нравится :)
                          Сергей Шлоков
                          06 ноября 2016, 19:52
                          0
                          Каждый выбирает сам. Свой путь я выбрал.
                          Если не секрет, скажи тихонько только мне :)
                          Роман Садоян
                          06 ноября 2016, 19:58
                          0
                          Сделать свой modx на симфони))))
                          Николай Ланец
                          06 ноября 2016, 20:01
                          0
                          На сколько я понимаю, друпал уже попробовали. Вроде как не очень вышло.
                          Евгений Борисов
                          06 ноября 2016, 20:00
                          +1
                          MODX Evo только для визиток. Но планирую переходить на OctoberCMS. Эта CMS основана на базе Laravel. Один из разработчиков русский парень. Продуманная схема монетизации. Один из крупных русских проектов сделан на этом движке — www.alfa-forex.ru (дочка альфа-банка).

                          С шаблонными интернет-магазинами я не работаю, поэтому тут посоветовать ничего не могу. Ну а вообще Laravel — для всех остальных проектов сложнее визитки.
                          Сергей Шлоков
                          06 ноября 2016, 20:06
                          0
                          Понял. Спасибо! Из этого делаю вывод, что ларавел не имеет таких проблем безопасности. :)
                          Роман Садоян
                          06 ноября 2016, 20:15
                          +2
                          Тренды говорят, что нужно уходить в JS на ноду, ставить метеор или экспресс, но это как идти вые***аться в чужой двор. Там своих проблем должно хватать.
                          Laravel сейчас топ-1 PHP фреймворк. Если важна скорость, то можно посмотреть в сторону Phalcon, а если какое-то Enterprise решение, то на мой взгляд — Symfony.
                          Для всего остального есть Laravel :D
                          P.S.: Писать на Laravel приятно. Но куда девать любовь к MODX?
                          Евгений Борисов
                          06 ноября 2016, 20:30
                          1
                          0
                          P.S.: Писать на Laravel приятно. Но куда девать любовь к MODX?
                          Сюда. Я это использую для того, чтобы манагер мог в любое место контента вставить галлерею или несколько. Форму обратной связи/подбора тура.
                          <?php $content = isset($content) ? Modx::mergeSnippets($content) : ''; ?>
                          @if( ! empty($content))
                              <div class="contacts-form text-content" itemprop="articleBody">
                                  {!!  $content !!}
                              </div>
                          @endif
                          Как пример https://premier-tur.com/sanitariums/abzakovo — страница объекта с несколькими каруселями и формой в произвольных местах. В итоге MODX теги обрабатываются не везде, а только там, где это нужно.
                          Сергей Шлоков
                          07 ноября 2016, 12:22
                          +1
                          Но куда девать любовь к MODX?
                          Может вернуть Джейсону обратно? Как мне кажется, автор должен быть заинтересован в совершенстве своего детища. А уж вопросы с безопасностью вообще должны решаться в доли секунды. Например, Цукерберг платит за найденные уязвимости. А тут нашли, сказали, наконец, доказали на собственном сайте, и только после этого они решили пошевилиться (речь о Евгении Борисове). Да и сейчас, видишь ли, у них выходные. Охренеть. «Такой хоккей нам не нужен».
                          Виталий Батушев
                          07 ноября 2016, 12:45
                          +6
                          Не стоит сравнивать проприетарный софт с опенсорсом. С последним сплошь и рядом такая фигня — автор устал, автору некогда, автор рубит бабло, автор вспотел — множество причин, почему автор навалить сорок куч на на «совершенство своего детища».
                          Роман Садоян
                          07 ноября 2016, 13:29
                          +1
                          Предлагаешь не юзать OpenSource?
                          Авторы позиционируют MODX как безопасную CMS, а тут выясняется, что это не так, что они не занимаются закрытием дыры, а просто меняют вектор атаки.
                          Я был вообще не в курсе таких проблем, даже после публикации этой статьи, пока не отписал Евгений Борисов. Я не менял префиксы таблиц, я просто закрыл доступ к /core/ /connectors/ и /manager/ там где можно, но есть проекты, где я сделать это не могу.

                          На мой взгляд именно Open Source способствует поиску уязвимостей. Ведь автор не один, комьюнити MODX это не комьюнити AltoCMS или Livestreet, где продукт пилят 1-2 разработчика.

                          Наличие такой дыры заставило серьезно задуматься о дальнейшей разработки проектов на MODX CMS.
                          Виталий Батушев
                          07 ноября 2016, 13:46
                          +1
                          Предлагаю не сравнивать несравниваемое.
                          Мое личное, сугубо субъективное мнение — форма собственности на продукт никак не влияет на его качество. От слова «совсем», усиленного наречием «вообще». Ну, и на поиск уязвимостей это так же мало влияет. Комьюнити, может, и большое, но окончательные точки расставляет ограниченное количество людей — что в открытом, что в закрытом коде. При этом, заметь, что если это не твоя работа, приносящая тебе деньги, то срочно бросать приносящую доход деятельность (семью, шашлыки и прочие радости жизни) ради хобби — несколько странно. Я к тому, что не нужно ждать чудес.
                          Однако опенсорс предполагает, что если не нравится работа автора, тащишь себе в норку, распускаешь на нитки и вяжешь волшебство по своему разумению.
                          Серьезно задумываться можно и без наличия дыр где бы то ни было :) У нас, гадство, работа такая :)
                          Евгений Борисов
                          07 ноября 2016, 23:15
                          +1
                          просто закрыл доступ к /core/ /connectors/ и /manager/ там где можно
                          Это проблему не решает. Есть куча точек в хода из различных компонентов, которые оставляют коннекторы в /assets/components/

                          В общем печалька. Решения нет. Я думаю даже в ближайшем будущем не будет — все сведется к тому, что данные нужно фильтровать заранее. Так, как это делают до сих пор в MODX Evo. Так что получается, что xPDO далеко не PDO, а псведо-pdo с частичной обработкой входных данных + куча костылей.
                          Николай Ланец
                          08 ноября 2016, 06:31
                          0
                          Так что получается, что xPDO далеко не PDO
                          Жень, а при чем тут это? Это же PDO выполняет запрос к базе данных, а не xPDO. Это он, по идее, должен следить за состоянием запроса и инъекции высматривать.
                          Сергей Шлоков
                          08 ноября 2016, 08:55
                          0
                          Есть куча точек в хода из различных компонентов, которые оставляют коннекторы в /assets/components/
                          Евгений, а такая проверка в коннекторе может закрыть эту точку входа?

                          ...
                          require_once MODX_CONNECTORS_PATH . 'index.php';
                          
                          $auth = !empty($modx->user) && isset($_REQUEST['HTTP_MODAUTH']) && $_REQUEST['HTTP_MODAUTH'] == $modx->user->getUserToken('mgr');
                          if (!$auth) {
                              // Тут можно любые переадресации делать. Этот код для примера.
                              header("Content-Type: application/json; charset=UTF-8");
                              header('HTTP/1.1 401 Not Authorized');
                              echo $modx->toJSON(array(
                                  'success' => false,
                                  'code' => 401,
                              ));
                              @session_write_close();
                              die();
                          }
                          ...
                          Николай Ланец
                          08 ноября 2016, 10:21
                          0
                          $auth = !empty($modx->user) && isset($_REQUEST['HTTP_MODAUTH']) && $_REQUEST['HTTP_MODAUTH'] == $modx->user->getUserToken('mgr');
                          if (!$auth) {
                          Сергей, то есть ты хочешь, чтобы все коннекторы обязательно были завязаны на контекст mgr и авторизацию в нем? Даже картинки, выводимые через phpThumb? Вообще все? И обновление собственного профиля в админке? Серьезно?
                          Не надо так делать!
                          Сергей Шлоков
                          08 ноября 2016, 10:25
                          0
                          Я писал только про коннектор из modExtra, который используется для создания своих компонентов.
                          А если заменить на $modx->user->getUserToken($modx->context->key)? Главное, проверить сессию с секретным ключом.
                          Николай Ланец
                          08 ноября 2016, 10:28
                          +1
                          Главное, проверить сессию с секретным ключом.
                          Если это будет контекст web, И что это даст? Личные кабинеты теперь никому не давать? А если давать, значит у пользователя будет этот ключ. Мы же здесь авторизованы.
                          Сергей Шлоков
                          08 ноября 2016, 10:33
                          0
                          Как то так.
                          Николай Ланец
                          08 ноября 2016, 10:50
                          0
                          Сергей, я запросы не со стороннего сервера слал, а из браузера. То есть здесь никаких кроссзапросов.
                          Евгений Борисов
                          08 ноября 2016, 12:31
                          0
                          Сергей, токены отчасти усложнят задачу. Но не решают ее. Грузится страница, берется токен. Затем этот токен и кукиусы подставляются в следующий запрос к уязвимому сценарию.
                          Сергей Шлоков
                          08 ноября 2016, 13:31
                          +1
                          Йошкин кот. Пошёл изучать laravel.
                          Василий Наумкин
                          08 ноября 2016, 14:02
                          0
                          Там CSRF из коробки работает для ajax запросов, но принцип тот же: токен привязывается к сессии и не меняется на протяжении всей её жизни.
                          Сергей Шлоков
                          08 ноября 2016, 14:10
                          0
                          Евгений Борисов
                          08 ноября 2016, 17:50
                          0
                          В Joomla так же есть CSRF. И для сплоита под CVE-2016-8869 + CVE-2016-8870 это не стало проблемой.
                          Роман Садоян
                          08 ноября 2016, 14:13
                          0
                          Может бложек вести будешь?
                          У Евгения был раньше, а сейчас что-то нет.
                          Сергей Шлоков
                          08 ноября 2016, 14:16
                          +1
                          Была такая мысль.
                          Сергей Шлоков
                          07 ноября 2016, 15:25
                          +2
                          Не стоит сравнивать проприетарный софт с опенсорсом. С последним сплошь и рядом такая фигня — автор устал, автору некогда, автор рубит бабло, автор вспотел — множество причин, почему автор навалить сорок куч на на «совершенство своего детища».
                          А авторы MODX бабло то на чём рубят, на ноде?
                          Евгений Борисов
                          06 ноября 2016, 17:40
                          +2
                          Потому, что они не реагировали на багрепорты;-) И это был единственный способ заставить их шевелиться. Увы, но это правда.
                          Николай Ланец
                          05 ноября 2016, 19:04
                          0
                          Вот этого точно вряд ли дождусь)
        Борода
        05 ноября 2016, 13:00
        0
        В Джумле, начиная с какой-то версии, префикс таблиц генерируется во время установки, либо можно самому задать. Хотя раньше был стандартный. Странно, что в МОДЭКС до сих пор такого нет.

        Я переходил с Джумлы, поэтому использую оба способа) Префикс и авторизацию через веб)
        Дмитрий Касаткин
        05 ноября 2016, 17:07
        +5
        Большое вам спасибо за находку и предоставленный способ решения проблемы.
        Огорчает, когда в любимом движке обнаруживаются такие серьезные проблемы, но отрадно, что это исправимо без серьезных трудозатрат.
        Отличная возможность с пользой провести выходные…
        Николай
        05 ноября 2016, 19:54
        0
        Добрый день, получается при обновлении нужно возвращать префикс обратно? Неужели нет возможности задавать префикс при обновлении или только в адванс версии?
          Николай Ланец
          05 ноября 2016, 20:52
          +2
          Перечитайте комментарии.
            Николай
            05 ноября 2016, 21:53
            0
            Николай, спасибо! По хорошему действительно обновление должно автоматом генерить нестандартные префиксы таблиц.
            Надо еще потестировать, что все снипеты нормально работают после смены префикса.
              Николай Ланец
              06 ноября 2016, 07:19
              0
              Если вы нигде не пишите чистые SQL-запросы (или хотя бы для формирования имен таблиц в таких запросах используете $modx->getTableName($class)), то все у вас будет работать нормально.
        Bluetenstadt
        06 ноября 2016, 03:55
        0
        Такое чувство что все проигнорировали пост Закалка MODX Revolution (перевод) (15 февраля 2016) от пользователя Алексей Бгатов.

        Изменение префиксов таблиц базы данных

        Лучше всего это делать при первоначальной установке, но никогда не поздно. Отказаться от дефолтного modx_ в пользу кастомного префикса полезно, поскольку это затруднит работу хакеру, который как-то заимел возможность делать SQL-инъекции в твою базу.
        В той статье много полезностей.
          Николай Ланец
          06 ноября 2016, 07:29
          +4
          И до этого много раз об этом говорилось. Ну и что? Осознавать начинаем только тогда, когда реально взлом прошел. Многие просто недопонимают опасности. А она есть. С учетом того, что результат я получил уже в течение часа (а потом в течение пары часов еще несколько дыр), после того как задался вопросом «А смогу?», если кто-то сильно заморочится, то может не за час, но за несколько часов это может сделать. Если вы с MODX более двух лет знакомы, то должны помнить волну взломов MODX-сайтов, пока не выпустили обновленную версию с заплатками. Тогда сайты ломали просто в автоматическом режиме, ходили боты по интернету, находили Рево-сайты и ломали. Так вот, текущие уязвимости из этой же серии, под них можно написать ботов и полетят сайты массово. Конкретно от этой уязвимости спасет кастомный префик таблиц. Поэтому как минимум свои важные сайты обновите.
        Константин Ильин
        06 ноября 2016, 10:27
        0
        Николай, первое это конечно огромное большое спасибо за «защиту» наших сайтов!
        Печально конечно, я до недавнего времени думал, что modx лучшая из лучших, считал гарантом и людям говорил зачем тебе битрикс за 20 тысяч в год если есть modx с большими возможностями и безопасностью. А оказывается дыр полно. Префикс старался менять на сайтах, но все же он не был супер сложным.

        Практически все эти проблемы решаются сменой префиксов таблиц и сокрытием папки коннекторов.
        Есть еще проблемы и как они решаются? т.е. я так понимаю их много и от этого становится еще печальней.

        Парни из modx что-то ответили? или надо их сайт взломать, чтоб они поняли…
          Николай Ланец
          06 ноября 2016, 10:31
          +3
          Не за что.

          Про битрикс: если бы я его изучал 7 лет, как MODX, наверняка я там еще больше дыр нашел бы. В целом MODX довольно хорошо защищен, далеко не каждый взломает.

          Есть еще проблемы и как они решаются?
          Я писал довольно много здесь про другие дыры, стоит перечитать комменты. Так или иначе, практически от всех этих уязвимостей спасает смена префиксов.

          Парни из modx что-то ответили? или надо их сайт взломать, чтоб они поняли…
          Они взяли на заметку. В отличие от нас буржуи привыкли в выходные отдыхать. Наверняка завтра примут PR. Но этот ПР не решение проблемы в целом, префиксы менять все равно надо.
            Константин Ильин
            06 ноября 2016, 10:43
            0
            Понял))
            Допустим если не идти легким путем, т.е. не менять префикс, а решать проблему в корне, я так понимаю в ядре копаться?
            А ты им предложил в корне проблему решать(может даже решение дал) или они завтра напишут срочно все меняйте префиксы?))
              Николай Ланец
              06 ноября 2016, 10:57
              +3
              Константин, не факт, что эту проблему можно решить на корню. Здесь слишком много аспектов. Смена префикса — это скорее всего и есть решение проблемы на корню. Да, многим не привычно и не удобно может быть, но при установке сменить префикс — это несколько символов вбить.
                Константин Ильин
                06 ноября 2016, 11:20
                +3
                Префикс (не зря же его придумали), как и соль в паролях, создан для защиты от злоумышленников и не зря при установке есть возможность указать его.
                Плохо то, что в modx можно сделать sql-инъекцию.
        Николай
        06 ноября 2016, 16:14
        0
        Пока нашел, что в AdvSearch перестает работать поиск, если используется Query hook, в котором нужно прописывать prefix.
          Николай Ланец
          06 ноября 2016, 16:22
          +1
          Речь об этом компоненте? Можете ссылку дать на конкретную строчку кода, где там используется префикс?
            Николай
            06 ноября 2016, 17:56
            0
            Речь идет не о самом снипете, а о хуке к нему для поиска в своих таблицах.
            В последнемпосте пример такого хука. Без указания префикса он почему-то не работал.

            К сожалению, сейчас компонент не поддерживается и найти актуальные доки невозможно. У goldsky доки не актуализировались и была ли вообще решена проблема не понятно.
            Жаль, хороший компонент, очень…
              Николай Ланец
              06 ноября 2016, 18:14
              +2
              Речь идет не о самом снипете, а о хуке к нему для поиска в своих таблицах.
              Вопрос тогда больше к своим сниппетам, а не к компоненту.
              А вот это:
              $main = array(
              'tablePrefix' => 'modx_', //The fix
              правильней переписать на
              $main = array(
              'tablePrefix' => $modx->config['table_prefix'], //The fix
              Во всяком случае в рамках парадигмы конкретно этого случая.
        t3mnikov
        07 ноября 2016, 07:36
        +4
        Спасибо за находку, Николай!
        Мой комент не в тему, но все же: если погуглить 'index of modx core' — можно найти тонну сайтов на MODX, с проиндексированным каталогами. Можно скачивать zip-компоненты, просматривать версию MODX через changelog.txt. Владельцы этих сайтов даже не подозревают о том, что уязвимы. Всему виной Apache и безответственность администрации хостинга.
          Николай Ланец
          07 ноября 2016, 07:45
          0
          Пожалуйста!

          +1
          Василий Наумкин
          07 ноября 2016, 09:09
          +3
          Кошмар какой!


          Предлагаю написать про это отдельный топик, наверняка многие не в курсе. И да, на modhost.pro по умолчанию для всех сайтов прописано правило
          location ~* ^/core/ {
              deny                all;
          }
            Владимир
            07 ноября 2016, 11:03
            0
            Василий, а вот бы еще, в свете недавнего шухера с безопасностью, составить список расширений на предмет глюков при изменении путей к папкам и т.п…
            В топик же не получится вставить опросник типа reformal.ru? Или есть такая возможность?
            (я к тому, что такой опросник могли бы обновлять все, а не только автор топика)
              Василий Наумкин
              07 ноября 2016, 11:09
              2
              +2
              Все нормальные дополнения будут работать без проблем с любым префиксом и папками, ибо они получается из системных настроек и констант.

              Проблемы могут быть только с собственными сниппетами, которые хардкодят префикс вот так
              $res = $modx->query("SELECT * FROM modx_users WHERE...");
              вместо
              $res = $modx->query("SELECT * FROM {$modx->config['table_prefix']}_users WHERE...");
              или даже
              $res = $modx->query("SELECT * FROM {$modx->getTableName('modUser')} WHERE...");
              это если есть xPDO модель для этой таблицы
                Владимир
                07 ноября 2016, 11:12
                0
                Нет, нет, я ж не о префиксе, я об изменении путей, переименовании каталогов и т.п.
                Просто хотелось бы список глючных (в этом случае) расширений все такие составить, ну, мало ли…
                  Василий Наумкин
                  07 ноября 2016, 11:21
                  1
                  +3
                  Никакой разницы. Все нормальные дополнения используют
                  MODX_CORE_PATH
                  MODX_ASSETS_URL
                  MODX_ASSETS_PATH
                  MODX_MANAGER_URL и т.д.

                  Хочется составлять и обновлять список — на здоровье. Каждый тратит своё время как хочет.
        zenit
        07 ноября 2016, 17:19
        -24
        Абсолютно бесполезная вещь с заменой префикса, и нихрена его не долго брутить. Крутишь слепую скулю — проверяешь каждый символ по очередно и за 5 мин твой My_PrfX234_ подбереться. Тут просто cms гомно в плане безопасности
          Роман Садоян
          07 ноября 2016, 17:20
          +5
          Зашел/Зарегился что бы обосрать MODX?)))
            zenit
            07 ноября 2016, 17:24
            -16
            Ты можешь поспорить что не говно в плане безопасности?
          Сергей Шлоков
          07 ноября 2016, 17:39
          +4
          Мы все с нетерпением через 5 минут ждём от тебя префикс этого сайта.
            zenit
            07 ноября 2016, 17:48
            -16
            Ну после дефейса согласишься, мне впадлу чет тут кому-то доказывать…
              Сергей Шлоков
              07 ноября 2016, 17:53
              +13
              Принимается. Уважительная причина. Хотя я ожидал что-то типа «Меня бабушка кушать зовёт. Как покушаю, сделаю уроки, посмотрю черепашек-ниндзя так сразу сразу».
                zenit
                07 ноября 2016, 17:56
                -14
                молодец
            zenit
            10 ноября 2016, 23:44
            -1
            xWdcKH6I4FYU_
              Василий Наумкин
              11 ноября 2016, 07:07
              +2
              Нет.

              Это префикс тестового сайта, созданного вчера на modhost.pro
                Антон
                11 ноября 2016, 07:50
                -2
                Но все-таки это префикс… сайта… на модх…
                Печаль.
                  Василий Наумкин
                  11 ноября 2016, 08:02
                  +3
                  Ты тоже так можешь:
                  1. Заходишь на modhost.pro
                  2. Создаёшь новый тестовый сайт
                  3. Смотришь его префикс
                  4. Profit!

                  Что и кому это доказывает — непонятно. Речь, всё-таки, шла о префиксе этого сайта, а не любого подряд.
                    Антон
                    11 ноября 2016, 08:17
                    0
                    Это префикс тестового сайта, созданного вчера на modhost.pro
                    Дык надо было написать кем именно созданного.
                    Если он сам создал и посмотрел, то это детский сад, а если он подобрал чужой префикс, то уже печаль.
                      Василий Наумкин
                      11 ноября 2016, 08:28
                      +6
                      Я не могу со 100% точностью заявлять, что человек, создавший сайт и написавший коммент — одно лицо, паспорт я не проверял.

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

                      Я уж молчу о том, что «великий хакер» создал здесь новую учётную запись с тем же ником, а не разблокировал старую — что было бы гораздо круче и нагляднее.

                      В общем вас, хорьков-паникёров, уже не стесняясь троллят, а вы ведётесь.
                    zenit
                    11 ноября 2016, 11:34
                    0
                    Префикс был получен в результате слепого перебора уязвимого параметра. Следовательно, любой сайт юзающий такой компонент может быть похекан, сиди дальше и продавай дырявый софт
                      Владимир
                      11 ноября 2016, 11:37
                      0
                      Бла-бла-бла.
                      Измени мой комментарий. :)) Или поменяй свой рейтинг. А то скучно, правда.
                        zenit
                        11 ноября 2016, 11:43
                        +5
                        Да я не собираюсь вредить. Но люди тут наотрез не хотят признавать проблемы в бе-сти
                          Владимир
                          11 ноября 2016, 11:46
                          +1
                          Ни кто не отказывается, просто одно дело проблемы, другое — профанация и троллинг.
                          Не вреди — доказывай. Или не ***зди. :))
                            Это сообщение было удалено
                            Владимир
                            11 ноября 2016, 12:01
                            0
                            дешевый стеб, чё
                            тестовый сайт тебе ссылку повторить? )) дерзай
                            zenit
                            11 ноября 2016, 21:10
                            0
                            эт голый modx, не палил его
                            Владимир
                            11 ноября 2016, 21:12
                            0
                            Т.е. ты дыры в конкретных компонентах нарыл? Голый не вариант ломать?
                            zenit
                            11 ноября 2016, 21:39
                            0
                            Да, мб и в голом есть. не палил
                            Владимир
                            11 ноября 2016, 11:53
                            0
                            На, тестовый сайт, s7328.h7.modhost.pro/, 24 часа.
                  zenit
                  11 ноября 2016, 12:20
                  -2
                  не гони это префикс таблиц базы store сайтика modx.pro (store@localhost)
                    Василий Наумкин
                    11 ноября 2016, 13:43
                    +3
                    Неа, сайтики modstore.pro и modx.pro даже физически расположены на разных серверах.

                    Но спасибо за логи, я внимательно смотрю где и что ты перебирал, на какие файлы обращался и какими запросами.
                    Теперь очевидно, что нужно делать дополнительную фильтрацию всех запросов, перед передачей их в xPDO.
                      zenit
                      11 ноября 2016, 20:57
                      +2
                      Повезло что на разных серваках. Чтоб ты не отвертелся, админский хэш modxplus:zSWcQ6ZhNOao44BywPCtdiifV5xN5YC886fwF+H0v9s=: соль — e411f02aa6ex4f8f921d2944cd21a366. А там их несколько тысяч. Перебор не быстрый, но за ночь — вариант. Какого масштабы? А какое кол-во сайтов, использующих уязвимые скрипты…
                      Что там про изменения и большие префиксы писали? Думаю теперь понятно, что эта фигнюшка не шибко поможет..? А вот фильтровать входные параметры грамотно.
                      И да, те покемоны, кто дизы ставят, походу и приобретали данные модули. Ну терь ждите фиксов от дяди зенита.
                  zenit
                  12 ноября 2016, 02:15
                  +20
                  Ну вобщем то в завершении темы, т.к. все просили префикс к modx.pro 8KGWv7PW4w3u_
                    Василий Наумкин
                    12 ноября 2016, 04:23
                    +7
                    Да, ты абсолютно прав — снимаю шляпу.

                    Я вчера весь день читал про слепые SQL и ставил эксперименты на тестовом сайте. А сегодня весь день буду обновлять свои дополнения на предмет фильтрации этих слепых SQL в запросах.

                    Очевидно, что на фильтрацию их в самом xPDO полагаться нельзя, как бы ни хотелось.
                      Антон
                      12 ноября 2016, 04:35
                      +1
                      Что с нашим сообществом не так?
                      Зениту место в топ10, а ему влепили 95 минусов и забанили.
                      Пилим сук на котором сидим.
                        Василий Наумкин
                        12 ноября 2016, 04:38
                        +4
                        С нашим сообществом всё прекрасно.

                        Человек сначала ярко выступили и получил заслуженные минусы и бан. Затем вернулся и доказал свою правоту — теперь получит почёт и уважение.

                        Ну а я получил массу информации по методике взлома сайтов, благодаря логам на сервере.
                      Сергей Шлоков
                      12 ноября 2016, 07:33
                      0
                      А сегодня весь день буду обновлять свои дополнения на предмет фильтрации этих слепых SQL в запросах.
                      Нам всем теперь нужно это сделать. Было бы неплохо написать про это инструкцию.
                        Василий Наумкин
                        12 ноября 2016, 07:36
                        +2
                        Я могу написать на что нужно обратить внимание и как исправить, но это же будет и инструкцией по взлому еще неисправленных сайтов и дополнений.

                        Так что, палка о двух концах. Свои дополнения я поправил, так что можно посмотреть коммиты у тех, что в открытом доступе — должно быть всё понятно.
                          Сергей Шлоков
                          12 ноября 2016, 08:22
                          +2
                          Думаю, так правильней.
                          Посмотрел Tickets (только он открыт). mSearch2 и Office обновил не глядя. Данный фикс немного меня успокоил. Я всегда так фильтрую данные в своих компонентах (на всякий ещё проверю все). Я про это даже статью год назад написал. Возможно Евгений её раскритикует, но для обсуждаемого случая она актуальна.
                          Но этот фикс решает половину проблемы. Что делать с коннектором (connector.php)? Евгений заходит через него. Запрос в ObjectGetProcessor с кривым id и милости просим. MODX это не фильтрует.
                          Т.е. надо переопределять метод initialize для всех get/update/delete процессоров и фильтровать в нём id.
                          public function initialize() {
                                  $primaryKey = (int) $this->getProperty($this->primaryKeyField,false);
                          	$this->setProperty($this->primaryKeyField, $primaryKey)
                          	return parent::initialize();
                          }
                          Очень хотелось бы услышать мнение Евгения по этому поводу.
                          П.С. По хорошему, MODX должен в процессоре смотреть мету ключа и фильтровать.
                            Василий Наумкин
                            12 ноября 2016, 08:41
                            +1
                            По идее (по идее), в modConnectorResponse идёт проверка на авторизацию в админку и там вообще ничего снаружи не должно проходить.

                            Но я уже ни в чём не уверен.
                              Сергей Шлоков
                              12 ноября 2016, 08:52
                              +1
                              Но я уже ни в чём не уверен.
                              Я тоже. В этом плане знаний маловато. Просто исхожу из комментария Евгения
                              Это проблему не решает. Есть куча точек в хода из различных компонентов, которые оставляют коннекторы в /assets/components/
                              Насколько я понимаю, именно для этого скрывается папка с коннекторами, а тут лежит в открытом доступе.
                              Очень хочется, чтобы Евгений успокоил насчет этого.
                              Василий Наумкин
                              12 ноября 2016, 09:09
                              +1
                              Я надеюсь, что речь именно про web-коннекторы.

                              Понятное дело, что через коннекторы менеджера тоже можно пролезть, но для этого требуется авторизация, а у web — далеко не всегда.

                              Ну, будем ждать еще взломов и смотреть логи, куда и как пролезли.
                              Василий Наумкин
                              12 ноября 2016, 10:27
                              4
                              +9
                              Покопался в исходниках и написал пока такой фикс xPDO::getCriteria():
                              public function getCriteria($className, $type = null, $cacheFlag = true)
                              {
                                  $c = $this->newQuery($className);
                                  $c->cacheFlag = $cacheFlag;
                                  if (!empty($type)) {
                                      if ($type instanceof xPDOCriteria) {
                                          $c->wrap($type);
                                      } elseif (is_array($type)) {
                                          $tmp = array();
                                          array_walk_recursive($type, function ($v, $k) use (&$tmp) {
                                              if (!is_numeric($k)) {
                                                  $tmp[$k] = $v;
                                              }
                                          });
                                          if (count($tmp)) {
                                              $c->where($tmp);
                                          }
                                      } elseif (is_scalar($type)) {
                                          if ($pk = $this->getPK($className)) {
                                              $c->where(array($pk => $type));
                                          }
                                      } else {
                                          $c->where($type);
                                      }
                                  }
                              
                                  return $c;
                              }
                              Это запрещает все запросы на получения объекта xPDO произвольным SQL запросом. Можно использовать либо первичные ключи, либо массивы с прописанными ключами, которые будут проверены при запросе.

                              По моим тестам работает хорошо, желающие могут проверить на себе — это файл core/xpdo/xpdo.class.php. Предложил код автору xPDO, буду ждать ответа.
                              Сергей Шлоков
                              12 ноября 2016, 10:42
                              0
                              Предложил код автору xPDO, буду ждать ответа.
                              Не забывай, сейчас выходные. Да ещё Рождество и Новый год скоро… Надеюсь, хотя бы в третьей версии MODX добавят. Осталось набраться терпения. :)
                              Ибо неведомы автору xPDO наши переживания, чего ему ноги ломать…
                              Василий Наумкин
                              12 ноября 2016, 10:44
                              +2
                              Да я, хотя-бы, обсудить хочу — есть ли в этом смысл.

                              Если есть, то могу и самостоятельно хотфикс в репозитории выложить, не взирая на праздники.
                              Сергей Шлоков
                              12 ноября 2016, 10:46
                              0
                              Я себе добавил. Заодно и потестирую.
                              Владимир
                              12 ноября 2016, 10:44
                              0
                              А пропатчить существующие сайты еще до принятия автором xPDO предложенного кода, не вариант?

                              а, вижу коммент modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70642
                              прадон, поспешил
                              Василий Наумкин
                              12 ноября 2016, 10:45
                              +1
                              Я свои уже пропатчил.

                              Другой вопрос, закрывает ли это сразу все дыры, или нужно еще методы какие править — потому и спрашиваю автора xPDO, он лучше знает.
                              Богдан
                              12 ноября 2016, 14:41
                              0
                              Василий, спасибо за фикс! У меня почему-то возникают проблемы с ним, когда пытаюсь в админке открыть страницу товара minishop2 — вылетает с ошибкой 500, лог Nginx:
                              2016/11/12 11:34:00 [error] 19083#19083: *7318843 FastCGI sent in stderr: «PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2097160 bytes) in
                              /var/www/*******/www/core/components/minishop2/processors/mgr/settings/option/types/combo-options.class.php on line 28" while reading response header from upstream, client: ********, server: *******.***, request: "GET /manager/index.php?a=resource/update&id=2440 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-******.sock:", host: "******.***", referrer: "https://*******.com/manager/?a=resource/update&id=867"
                              Страницы категории и обычные страницы в админке открываются нормально.
                              Василий Наумкин
                              12 ноября 2016, 14:48
                              +2
                              Это же просто эксперимент пока. Неизвестно где и как отразится ужесточение получения объектов.

                              Использовать на свой страх и риск, при получении ошибок — смотреть логи SQL и думать, как исправить.

                              У меня на тестовом сайте, например, всё в порядке с combo-options.
                              Николай Ланец
                              12 ноября 2016, 17:33
                              -1
                              По идее (по идее), в modConnectorResponse идёт проверка на авторизацию в админку и там вообще ничего снаружи не должно проходить.

                              Но я уже ни в чём не уверен.
                              Поверь, происходит. И в тикетс ты коннектор не поправил. Через него сюда и можно добраться, а там и в другие процессоры. В часть из них и без авторизации.
                        Евгений Борисов
                        12 ноября 2016, 14:27
                        +1
                        Я считаю, что до тех пор, пока при запросе $modx->getObject('modResource') можно будет получить объект modUsers, тема будет не закрыта.
                          Василий Наумкин
                          12 ноября 2016, 14:34
                          +1
                          Но как, Шерлок? Особенно вот с этим исправлением?

                          Там же вроде идёт что-то типа
                          $object = new $objectName($data);
                          или типа того. Хотяяя… можно же, наверное, подставить как-бы class_key = 'modUser' и тогда будет создан именно этот объект.
                      Евгений Борисов
                      12 ноября 2016, 14:26
                      +1
                      Нужно было через POST работать;-) А вообще, давно известно, что Василий в отличии от Философа активно курит логи. Поэтому площадку для демонстрации нужно было выбирать не modx.pro;-)
                        Василий Наумкин
                        12 ноября 2016, 14:36
                        +1
                        Да там и POST завались, и подбор директорий через OWASP_DirBuster_Project, и еще много всякого в поисковых запросах (вроде всё отфильтровалось).

                        Я вовсе не уверен, что всё закрыл, но основное — наверняка.
                        Вася
                        12 ноября 2016, 14:43
                        +5
                        У Зенита явно было желание помочь.
              Николай
              08 ноября 2016, 09:49
              0
              Т.е. можно поочереди проверить каждый символ, а не перебирать каждый раз всю комбинацию целиком???

              И мы так и не узнаем как…

              PS Василий, такой праздник испортил, теперь опять придется на компоненты по 500 руб наскребать, а могли бы за час пароли ко всем банковским картам узнать((
                Владимир
                08 ноября 2016, 09:52
                0
                Смешного мало. То что взлом возможен он доказал изменив свой комментарий. Какие уж тут шутки.
                  Василий Наумкин
                  08 ноября 2016, 10:20
                  +1
                  Это я пошутил.

                  Подбил на взлёте яркую звезду, которая ушла в рейтинг -10 за 5 комментов.
                    Владимир
                    08 ноября 2016, 10:26
                    0
                    уффффффф, придется снимать стресс теперь))))))
                  Николай
                  08 ноября 2016, 10:52
                  +2
                  Вы реально поверили, что он комментарий поправил?))))

                  Первое что он должен был сделать тогда — это рейтинг себе накрутить — + 1000 в карму. И продолжать долго постить после бана.

                  А так очевидно было, что это Василий))
                    Владимир
                    08 ноября 2016, 11:11
                    0
                    Оно, конечно, логично)) Сейчас)) А в момент приступа страха все было иначе))))
                    Вы реально поверили, что он комментарий поправил?))))
                    — да)))
            zenit
            07 ноября 2016, 17:25
            -9
            Я хотел вам тут еще много крутого рассказать, но пришёл злой Василий и меня забанил, увы…
              2iBiR
              07 ноября 2016, 23:03
              0
              Tell me, bro…
              Евгений Борисов
              07 ноября 2016, 23:06
              +2
              Я тоже бы хотел узнать. Вдруг чего-то новое))
              Сергей Шлоков
              08 ноября 2016, 06:54
              0
              В 5 минут не уложился, но комментарий, вижу, изменил. Мда, печально всё с MODX.
                Владимир
                08 ноября 2016, 10:12
                0
                честно, аж дурно стало) жуть и печаль
                Василий Наумкин
                08 ноября 2016, 10:19
                +4
                Да это я отредактировал, смеха ради.

                Неужели ты думаешь, что забаненый человек с возможностью что-то редактировать обошёлся бы без матов и сам себя не разблокировал?
                  Сергей Шлоков
                  08 ноября 2016, 10:21
                  +1
                  Ну и шуточки у тебя. Чуть инфаркта Микарда не получил.
                  Владимир
                  08 ноября 2016, 10:23
                  0
                  Если бы ты не сказал, то я так бы до инфаркта и дожил бы… уже сегодня))))))

                    Василий Наумкин
                    08 ноября 2016, 10:26
                    +2
                    Я думал, это очевидно, что комментарий от зачёркнутого никнейма изменить мог только «злой Василий».

                    Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?
                      Владимир
                      08 ноября 2016, 10:28
                      0
                      Ну, как бы паранойя реальность искажает, страх он такой, может голову совсем снести))
                      Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?
                      — нет, в другую дыру, известную злоумышленнику
                        Василий Наумкин
                        08 ноября 2016, 10:29
                        +3
                        Не боись.

                        При первых же признаках взлома я побегу к Евгению Борисову и он тут всё обезопасит. Возможно, даже со скидкой, по старой дружбе =)
                          Владимир
                          08 ноября 2016, 10:31
                          0
                          Аллилуйя! (это не сарказм)
                      Николай Ланец
                      08 ноября 2016, 10:30
                      +4
                      Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?
                      Судя по всему, многие поверили. У страха глаза велики.
                      Значит 70-100 в десятой степени у них выполняется за 300 секунд, а сайты с 1000 документов за 30 секунд не всегда выполняются. Магия какая…
                        Владимир
                        08 ноября 2016, 10:33
                        0
                        70-100 в десятой степени
                        — нет же, просто скорее веришь в другие, неизвестные дыры, которые мерещатся от любого чиха.
                        У страха глаза велики.
                        огого!!! именно, да)))
                        Евгений Борисов
                        08 ноября 2016, 12:02
                        +3
                        Господи, как же ты смешон. Последний раз я подобный бред нес лет в 14, когда в автобусе пытался объяснить однокласснику почему пользоватлей *win взламывают чаще, чем *nix. Не поверишь, до сих пор эту историю вспоминаю со стыдом. Моя позици была жестка и не поколибима — прям как у тебя сейчас.
                        *win — там окошечки. И окошечки можно мышкой перетаскивать. Поэтому нужно контролировать каждый пиксель
                        *nix — все в терминале. Он текстовый. Поэтому контролировать мы должны только все печатные символы.
                        Вывод: печатных символов меньше чем пикселей на экране. Поэтому *nix взломать проще.

                        Для чего я эту историю рассказал? Да для того, чтобы ты все-таки понял, как смешон в попытках доказать свою правоту аргументами, который вообще не имеют отношения к реальному положению вещей.

                          Николай Ланец
                          08 ноября 2016, 16:27
                          0
                          Женя, что-то ты какую-то фигню сейчас сказал. Давай просто? Ты считаешь, что нет разницы между простыми и сложными паролями? Что же народ не пользуется одними только паролями типа 123456 и qwerty? Не потому ли, что их проще подобрать? И ты хочешь сказать, что подобрать префикс типа modx2_ и sdfWE234s_wefSDf_ — одна и та же задача? И время займет это одно и то же?
                            Евгений Борисов
                            08 ноября 2016, 16:49
                            +1
                            Ты путаешь божий дар с яичницей. Полный перебор пароля для некоего хеша и полный посимвольный перебор строки.
                            $str = '123';
                            md5($str) = 202cb962ac59075b964b07152d234b70
                            Т.е. чтобы подобрать пароль 123, тебе нужно перебрать все возможные комбинации символов и букв. Поскольку тебе нужно целиком строчку подбирать, а не посимвольно.

                            С префиксом ситуация другая. Тебе нужно перебирать не всю строку сразу, а по отдельности каждый символ. Слепая SQL-injection на этом и основана, что берется 2 запроса к сайту. Которые приводят к разному выводу. Таким образом, берем некий символ из набора. И подставляем его в запрос. Если запрос отвечает 1 выводом. То символ выбран не верно. Если отвечает вторым выводом — то символ выборан верно и мы берем пробуем подобрать следующий символ неизвестной строки.
                            Таким образом, тут длина строки и разные регистры лишь ненамного увеличивают время перебора.

                            Раз уж ты любишь формулы и наглядые примеры, то дано:
                            Набор символов: 1234567890
                            Перебор хеша пароля из 3 символов: 3^10 = 59049 комбинаций
                            Посимвольный перебор строки из 3 символов: 10*3 = 30

                            Чуешь разницу? Если бы от твоего префикса генерировался некий хеш, то да. Для брута это бы существенно усложнило задачу. В твоем же случае sdfWE234s_wefSDf_ (цифры + буквы +буквы в верхнем регистре + символ _) = 63 символа. Это максимум 1071 запрос к серверу. Как думаешь, 1071 запрос может сервер обработать за 30 секунд? А если запросы еще слать параллельно, а не последовательно?
                              Николай Ланец
                              08 ноября 2016, 17:03
                              -2
                              Женя, у тебя тут совсем плохо с математикой.
                              Перебор хеша пароля из 3 символов: 3^10 = 59049 комбинаций
                              Не 3 в десятой, а 10 в третьей. Условно 1000.
                              3 в десятой — это если бы у тебя был набор из трех символов, и длина строки 10 символов. Проще это смотреть в двоичной системе исчисления. У нас есть только два символа — 0 и 1. Количество вариантов для строки из 4 символов в двоичной системе — это два в четвертой степени = 16. В той же системе 8 символов — 2^8 = 256.
                              Если возьмем 16-тиричную систему (то есть набор из 16 символов), то для строки в 8 символов мы получим 4294967296 вариаций. Все RGB цвета зашифрованы всего в три 16-тиричные пары.
                              А в строке sdfWE234s_wefSDf_ 17 символов. Набор символов — a-zA-Z0-9_, то есть 63 символа. Итого это будет 63^17 вариаций. Знаешь сколько это? 3879621350651476389602631582783
                              Не много ли для перебора? Даже локально попробуй себе набрать произвольную строку в 17 символов и перебрать в цикле все вариации.
                              Удивил ты меня с 1071 запросом…
                                Кирилл
                                08 ноября 2016, 17:26
                                +2
                                Он же говорит про слепую инъекцию, т.е. для перебора первого символа из префикса нужно сделать максимум 63 запроса. Раз длина префикса 17 символов, то общее максимальное число запросов для подбора этого префикса: 17х63, что как раз 1071 запрос в общем итоге.
                                Евгений Борисов
                                08 ноября 2016, 17:40
                                +2
                                Начинает подбешивать твоя упертость в своей правоте. Кури скрипт с двумя различными техниками брута строки fD3_
                                Результат работы ошеломляет
                                Full string: fD3_ => 1622943
                                By char: fD3_ => 155
                                И прекрати уже наконец людей вводить в заблуждения. Попахивает моветоном
                                Николай Ланец
                                09 ноября 2016, 10:41
                                -3
                                Ладно, поверю тебе на слово, что так возможно подобрать. Но все равно, это уже труднее (хотя бы потому что я не смог этим воспользоваться, наверяка это и другим добавит сложностей).
                                Сергей Шлоков
                                11 ноября 2016, 21:36
                                +1
                                Невозможно перейти на по этой ссылке. Видимо Василий зафильтровал всё нафиг. :)
                  Роман Садоян
                  08 ноября 2016, 10:25
                  0
                  .
              Константин Ильин
              08 ноября 2016, 11:37
              +2
              С каждым заходом в эту тему, так становится печальнее… Где-то писали про любовь к модх — она постепенно угасает (скоро будет: «прошла любовь, завяли помидоры»).
              Дабы этого не произошло со всеми и со мной надо найти какое-то решение, потому что здесь оставляем комментарии и дыр выявляется много, а там в кабинетах модх скорее всего ничего не меняется. Где-то месяц назад или более Василий выкладывал новость о создание команды на будущее развитие модх (вроде так было, поправьте если путаю), так вот я предлагаю собрать похожую «команду»,«совет»,«консорциум», просто группа, которая напишет большой БагРепорт и будет в будущем писать о дырах модх, а также если есть решение.

              Например: Василий, Николай и Евгений Борисов, они ребята «авторитетные» и о них в модх знают, проще говоря к ним прислушаются. Написали в модх, что вот там то дыра, поправить можно так-то, в модх увидят, что письмо от этой команды и рассмотрят его и отнесутся с серьезностью, а не просто забьют. Так сказать нужно подсказывать разработчикам («подпинывать») модх, но тем самым сделать очень большое дело!!!
              Глядишь и команда Simple Dream тоже подключится или кто то другой. Даже, хотя бы исходя из финансовой точки зрения, из-за дыр не будет пользователей модх и никто не будет покупать в магазине дополнения и много разных вытекающих последствий…

              Ведь это любовь к модх, а за любовь надо бороться.
                Роман Садоян
                08 ноября 2016, 12:11
                0
                Так Евгений Борисов это и делал (судя по комментам выше), но увы, руководству было всё равно.
                  Константин Ильин
                  08 ноября 2016, 12:13
                  0
                  Ну вот я поэтому имел ввиду не один человек, а группу экспертов модх.
                Dmitry
                08 ноября 2016, 12:32
                +2
                Боюсь, что пока кто-то не начнет взламывать сайты авторов MODX, они не начнут относиться серьезно к безопасности движка.
                  Евгений Борисов
                  08 ноября 2016, 12:37
                  +6
                  Да были же уже взломы. И чхали они на них. Сейчас вот modxcloud раздает информацию о первых 9 пользователях удовлетворящих запросу. Всего 21168 пользователь. И это только с криво сформированным запросом (никакой SQL-injection и попыток взлома — просто кривой запрос). И это только на этапе регистрации… А что там еще в ЛК твориться — страшно представить.
                    Роман Садоян
                    08 ноября 2016, 12:43
                    0
                    А это у Login или у другого компонента кривой контроллер?
                    Получается что все дополнения рассчитывали на безопасность XPDO на нижнем уровне (жесткую проверку на авторизацию, строгая типизация какая-нибудь), а как оказалось её там нет, так?

                    Или это все та же песня о том, что разработчики (дополнений) сами не фильтруют входные данные и открывают дыры XSS/SQL?
                      Евгений Борисов
                      08 ноября 2016, 13:04
                      +5
                      Или это все та же песня о том, что разработчики (дополнений) сами не фильтруют входные данные и открывают дыры XSS/SQL?
                      XSS
                      Да. Тут XSS делится на 2 вида. XSS для внедрения JS кода. И XSS для внедрения MODX тегов. Многие разработчики не чувствуют разницу. Поэтому если и фильтруют, то по старинке через htmlspecialchars, а этого недостаточно, чтобы обезопаситься от внердения MODX тегов.
                      Если же начинать думать глобально. То рождаются костыли (на данный момент такая практика считается нормой — но на мой взгляд, эта норма граничит с дебилизмом)

                      А еще, если в запросе будет передано [[*id]], то modx вырежет это из текста. Если помните, был такой баг, когда передавали что-то в стиле [[[[[[[[[[[[[[[[*id]], чтобы получить [[*id]] и обойти встроенную фильтрацию. Пофиксили. Но сейчас есть еще один способ, но из-за множества условий, работает он далеко не везде. И тем не менее, вы уверены, что на вашем сайте новый способ не сработает?

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

                      SQL
                      О том, что xPDO позиционируется как удобная прослойка между стулом и pdo. Но если pdo через плейсхолдеры подставляет данные и обрабатывает их. То xPDO иногда этим жертвует, чтобы пользователю дать синтаксический сахар. В итоге получаем конфуз, т.к. SQL запрос в xPDO иногда собирается конкатенацией строк, а не средствами pdo с обработкой.

                      Таким образом, программист пишет код думая, что данные будут сами обработаны в соответствии с моделями/схемами. Но они далеко не всегда обрабатываются. А если обрабатывать данные руками, то лично я не вижу разницы между xPDO и нативным pdo. Более того, xPDO мне только все усложняет заставляя делать еще какую-то не нужную работу.
                        Василий Наумкин
                        08 ноября 2016, 14:10
                        +3
                        Жень, скажи честно — вот на modx.pro сейчас есть теоретическая возможность взлома через подобные лазейки?

                        Если есть, напиши мне, пожалуйста, стоимость работ по полному анализу и исправлению на мыло.

                        P.S. Дебилизм — не дебилизм, но вроде через Tickets пока не было массовых взломов.
                          Евгений Борисов
                          08 ноября 2016, 14:13
                          0
                          Жень, скажи честно — вот на modx.pro сейчас есть теоретическая возможность взлома через подобные лазейки?
                          Теоретически — да.
                          Если есть, напиши мне, пожалуйста, стоимость работ по полному анализу и исправлению на мыло.
                          Ниже ответил как я работаю.
                            Василий Наумкин
                            08 ноября 2016, 14:20
                            +1
                            Понял, спасибо.

                            Значит буду проверять свои дополнения самостоятельно.
                          Николай Ланец
                          08 ноября 2016, 16:39
                          0
                          P.S. Дебилизм — не дебилизм, но вроде через Tickets пока не было массовых взломов.
                          Я же тебе выше писал, что через тикетс запросто в системные процессоры залез.
                            Василий Наумкин
                            08 ноября 2016, 16:44
                            0
                            Тут речь про фильтрацию тегов на фронтенде.
                              Николай Ланец
                              08 ноября 2016, 16:46
                              0
                              Да там скорее всего много чего найдется. Я вообще квадратные скобки на спецсимволы менял и все. &91;
                    Константин Ильин
                    08 ноября 2016, 12:44
                    +1
                    п… — другого слова нет. О какой такой нашей безопасности может идти речь если они себя не состоянии обезопасить.
                      Роман Садоян
                      08 ноября 2016, 12:47
                      0
                      Ага, не говори, у нас у всех потенциально на проектах есть огроменная дыра, которая сидит и ждет мозговитого спеца, который захочет извлечь какие-нибудь данные или нанести ущерб.
                      Николай Ланец
                      08 ноября 2016, 16:45
                      1
                      +5
                      wordpress весь в дырах, это не мешает им быть самой популярной CMSкой. Вы попробуйте сначала воспользоваться этими дырами.
                      Лично я не вижу вообще оснований все бросать и переходить на другую систему. Зачем? Чтобы там кто-то знающий пришел и рассказал, что есть дыры? Пойдете на другую платформу? Есть не мало статей написанных как обезопасить MODX. Переведите админку и коннекторы на другой поддомен, закройте его по ip и двухфакторной авторизацией. На фронте дайте одну только точку входа и фильтруйте входящие запросы. Все. Что вам еще надо? Это на серьезных проектах. Простые сайты-визитки делаете? Кому вы нужны? — поменяйте префикс и все.
                      Это будет касаться практически любого проекта. Я не думаю, что Женя через какое-то время обнаружит дыры и в ларавеле (если еще не нашел).
                        Роман Садоян
                        08 ноября 2016, 16:51
                        0
                          Николай Ланец
                          08 ноября 2016, 17:20
                          -1
                          Я не нашел возможности этим воспользоваться. То есть если бы была возможность увидеть данную информацию, то конечно же было бы проще. Загнать в переменную название полученной таблицы то же можно, но нельзя выполнить запрос типа select * from @table;
                    Роман Садоян
                    08 ноября 2016, 13:20
                    +1
                    Может отправить на security@modx.com полный список всех клиентов и их данные и сказать «Ай, ай, ай ребята», прикрепить ссылку на эту новость, пускай учат русский и читают комменты, м?
                    Сказать, что выложим в публичный доступ все email + имена. Это как-никак конфиденциальная информация и мало кто этому обрадуется. Получится своеобразный пинок под зад, надеюсь они выйдут на контакт и приложат усилия к фиксу.
                      Евгений Борисов
                      08 ноября 2016, 13:29
                      0
                      Мне это не интересно.
                      Dmitry
                      08 ноября 2016, 13:33
                      +2
                      А еще можно сделать рассылку всем клиентам их клауда, что все их сайты и данные уязвимы, и подкрепить их данными, и что пора переезжать. Думаю, когда клиенты начнут разбегаться, они зачешутся. Раз простыми словами разрабы принебрегают, то нужно уже действовать. Я бы так и сделал, т.к. У меня много сайтов на этой системе, и у моих клиентов. Если их взломают, то геморрой прилетит на мою голову. Но знаий у меня недостаточно. А Евгению Борисову вряд ли интересно этим заниматься.
                        Евгений Борисов
                        08 ноября 2016, 14:04
                        0
                        А Евгению Борисову вряд ли интересно этим заниматься.
                        Аудит Evo проектов провожу. А Revo — нет. Дело в том, что если находится дырка в компоненте, то исправить я ее не могу, т.к. нужно либо связываться с разработчиком, чтобы он выпустил патч (а этот патч лишает меня последующей работы). Либо форкать компонент и собирать свою версию (а это лишает владельца сайта возможности обновляться и получать новый функционал).

                        Поэтому в Revo я проверяю только самопис. А его в большинстве случаев ооочень мало. Поэтому чтобы из-за копеек не брать на себя ответственность я стараюсь обходить аудит revo стороной. Боле того, есть псевдозаказчики, которые хотят получить в отчете по аудиту все. Начиная от способов устранения, до способов взлома. В конечном счете начинают сами своим клиентам предлагать доп.услугу — аудит безопасности сайтов modx revo.

                        Поэтому мониторю и исправляю уязвимости только на тех проектах, которые находятся у меня в полной поддержке. Т.е. не разово платят за аудит, а ежемесячно, чтобы я мониторил состояние. Фиксил баги и оперативно удалял вирусы если вдруг они залезли, например, через ФТП. А эту услугу заказывают уже конечные клиенты, а не посредники. И то, только те, которые понимают что заказывают.
                        В общем если есть вопросы — обращайтесь через почту на modx@agel-nash.ru
                    Николай Ланец
                    08 ноября 2016, 16:35
                    0
                    Сейчас вот modxcloud раздает информацию о первых 9 пользователях удовлетворящих запросу. Всего 21168 пользователь.
                    Жесть…
              Николай
              08 ноября 2016, 22:49
              +1
              А киньте, пожалуйста, ссылочку на правильную настройку бекапов. Желательно с заброской на облако куда-нибудь.
              Понял, что если нельзя проблему решить, нужно ее предвосхищать.
                  Николай
                  09 ноября 2016, 09:26
                  0
                  Огромное вам спасибо!
                Николай
                09 ноября 2016, 09:41
                +2
                Еще сам себе отвечу, но мне кажется, что один из важных аспектов — это вообще скрытие cms сайта.

                Постараюсь объяснить.
                В меру моего понимания есть два направления взлома — целенаправленно (из неприязни, злой конкуренции) и массово (обычный робот обходит сайты и ищет заранее известные дыры).
                От первого направления защититься сложнее всего и тут нужно обращаться к спецам типа Евгения. А второй, как мне кажется, должен чаще встречаться, но защититься от него проще.
                И основная защита от массовых взломов — это скрыть характерные признаки CMS, чтобы различными сервисами и простыми методами невозможно было определить, что у вас Modx.

                Вот что я нашел для себя работающим:
                1) Перенести админку из manager в другую папку. Делается легко, для меня только оказалась проблема с обновлением, т.к. каждый раз приходится переименовывать соответствующую папку в пакете обновления modx, но что делать…
                2) Ни в коем случае не указывать путь к админке в robots.txt. Ну т.е. запись Disallow: /newmanager/ — это очень удачная подсказка, где теперь ваша новая админка. Пробежав по всем путям Disallow из этого файла можно выудить где ввод пароля и все.
                Не переживайте, робот поисковых систем даже если и найдет ваш новый путь не будет выкладывать его в поиск т.к. там нечего выкладывать.

                Я не гуру и могу ошибаться, поэтому давайте вместе поищем какие-то правила где и что закрывать.
                  Илья Уткин
                  09 ноября 2016, 10:01
                  +4
                  Чтобы не переименовывать админку каждый раз после обновления, скачивайте advanced версию и указывайте «Расширенное обновление»
                  Роман Садоян
                  09 ноября 2016, 10:02
                  +4
                  config.inc.php нужно скрывать, в новых версиях отключать заголовок X Powered By.
                  Но, это все не спасет, если бот будет проверять наличие какого-нибудь дополнения.
                  pdoTools почти на каждом сайте же, а 200 ответ от сервера по данному URL modx.pro/assets/components/pdotools/js/pdopage.js на 99,9% идентифицирует о том, что это MODX.
                  Можно переименовывать папку /assets/ от ботов может быть спасет, но не более.

                  А так дыры есть везде, одно дело если они в компонентах, другое дело, когда в системе.
              Антон
              09 ноября 2016, 06:30
              +5
              Эпилог то какой?

              Василий написал, что «префикс таблиц теперь приравнивается к паролю супер-админа»,
              а Евгений после забаненного Зенита написал, что префикс посимвольно брутится за несколько секунд.

              В итоге получается, что пароль супер-админа подбирается за несколько секунд.

              Разработчики Модха ничего не делают,
              Василий хочет, но не может,
              Евгений может, но не хочет.

              Что делать, господа?

              Ждать пока Василий и Евгений совместно форкают Модх и делают другую ветку — Модх ЕВа?
                Алексей
                09 ноября 2016, 09:50
                0
                вроде как сейчас безопаснее использовать laravel на сколько я понял. Хотя ведь всяко бывает, возможно в обозримом будущем можно будет вновь говорить о безопасности MODX
                  Илья Уткин
                  09 ноября 2016, 10:05
                  +5
                  На самом деле Laravel — не панацея. Во время разработки вы сами можете открыть дыру — хоть на Laravel, хоть на MODX, хоть на самописной системе
                    Роман Садоян
                    09 ноября 2016, 10:28
                    0
                    Да, но там закрывают дыры, а у нас по словам Евгения — просто меняют вектор атаки.
                    Алексей
                    09 ноября 2016, 12:28
                    0
                    согласен. Тогда немного изменим направление вектора в сторону серверной обвязки. К примеру
                    suhosin, naxsi, ModSecurity. Как считаешь, с помощью этих пакетов можно хоть как-то обезопасить MODX сайт на сервере от внешних атак?
                Николай
                09 ноября 2016, 10:04
                +2
                Евгений и Николай знают как взломать, но пока никому не рассказали.
                Хотя тот кто разбирается уже мог увидеть эту ветку и дальше вопрос насколько легко написать программку для массового взлома.
                Если легко, то сразу после взлома выйдут и заплатки, все же разработчики MODx, даже если считать и ленивыми, очень талантливые программисты и выход найдут. Если сложно, то задабривайте врагов, чтобы они не пришли ломать лично ваш сайт))
                  Пётр Молчанов
                  09 ноября 2016, 11:14
                  +1
                  )))
                  кто бы ты ни был, мой враг, пожалуйста, не взламывай мой сайт. так подойдет?
                    Николай
                    09 ноября 2016, 12:13
                    0
                    не, это вы для массового взлома написали
                    а для персонального задабривать надо Евгения и Николая, чтобы они к вам не пришли))
                      Пётр Молчанов
                      09 ноября 2016, 12:31
                      0
                      получается Евгений и Николай — враги? о_0
                        Николай Ланец
                        09 ноября 2016, 13:19
                        0
                        получается Евгений и Николай — враги? о_0
                        Ну, вообще мне тут много кто в карму нагадил)))
                        Но для меня это не повод.
                          Пётр Молчанов
                          09 ноября 2016, 14:22
                          +3
                          странно, я наоборот голосую за то, чтобы вся глубина проблем выливалась наружу на обозрение общественности. это двигатель прогресса))) заставляет двигаться ответственных лиц
                        Николай
                        09 ноября 2016, 13:23
                        0
                        кто знает, может это вы из под зенита писали? ))

                        а так, лучше как минимум их не злить))
                Hiddenski
                09 ноября 2016, 11:28
                0
                Ладно если бы ждать надо было подобного: — «Через пару дней будут фиксы».

                Тут у многих целый парк MODX-сайтов. Часть народу, таких как я, мало что понимают в движках. И от осознавания беспомощности руки падают. Ты знаешь о дырах, но сделать ничего не можешь

                На одном из сайтов поставил Advanced + советы от Философа, но я даже не знаю…
                  Николай Ланец
                  09 ноября 2016, 12:13
                  +2
                  Мне клиент передал вордпресс-сайт на поддержку, просто вместе с остальными сайтами. Через пару недель весь сайт как вшивая собака, благо в «клетке» был. Но вордпресс по прежнему №1 по популярности в мире.
                    Роман Садоян
                    09 ноября 2016, 12:33
                    +3
                    У вордпресса есть проблема с плагинами, такая же проблема есть и в MODX.
                    Просто рынок модикса ничтожно мал по сравнению с гигантом WP. По этому под MODX еще не пишут ботов всяких итд итп, которые бы проверяли сайт на дыры и грузили бы шеллы, а вот по WP это все есть и прекрасно работает.
                      Николай Ланец
                      09 ноября 2016, 12:47
                      +7
                      По этому под MODX еще не пишут ботов всяких и тд и тп
                      Так и есть. Задумываюсь написать… Точнее написать сервис для автоматической проверки MODX-сайтов на уязвимости…
                      Как и говорилось выше в комментариях ребятами, скрыть, что это MODX — уже замечательно. Вот займемся написанием проверок.
                        Илья Уткин
                        09 ноября 2016, 13:34
                        +7
                        А можно еще и добавить пару признаков WordPress'а. Пусть пытаются взломать несуществующий движок…
                          Владимир
                          09 ноября 2016, 13:37
                          0
                          Да, да, я так уже)))
                          Посмотрел, а wp-admin — сверх частый запрос от ботов, ну так нате, вот вам админка от вордпреса, велкам)) Плагинов еще напихать? Статичные файлы, лишь бы пути были как у каких-то популярных WP плагинов? ))
                          Маскируемся!
                          Hiddenski
                          09 ноября 2016, 13:54
                          +1
                          На сайт 1 свой сайт где HTML-странички добавлял админку от WordPress'а. Чисто издевки ради
                          Антон
                          09 ноября 2016, 18:39
                          +1
                          Тогда ждем от вас компонент по смене префиксов и превращению (маскировке) Модха в Вордпресс.
                          Антон Соловьёв
                          09 ноября 2016, 21:28
                          0
                          По-моему видел я даже пакет специальный, который админки других сайтов имитирует… Боюсь конечно напутать и наврать. Но у меня как бы лычка ShopModxBox в футере, так что было немного нелепо данный пакет устанавливать. Или там попытки зайти на страницы админок фиксируются… Не помню точно… Ну, у меня опять же плагин wappalyzer в браузере, сам себя ловить буду. Да и пути к js глобально менять ленился.
                            Евгений Борисов
                            09 ноября 2016, 21:55
                            +1
                            Я вас может быть немного разочарую. Но
                            — при массовых взломах насколько мне известно запросы идут сразу на уязвимый сценарий. — Попытки найти админку бывают из любопытства.
                            — Определение CMS по сигнатурам это только если сайт действительно интересен. Коли это так, то спрятать все сигнатуры довольно сложно. Особенно если сайт чекается руками, а не через 2ip

                            Так что небольшой профит в получите. Возможно даже узнаете об уязвимостях в других CMS таким способом. Но полагаться на подобную защиту нет смысла.
                              Дмитрий Суворов
                              09 ноября 2016, 23:36
                              0
                              ну выходит, что нет полностью безопасных систем? Может быть только если чистые, не обремененные разнообразными плагинами, самописами и т. д. Получается, что для талантливых специалистов в области взлома вообще нету закрытых дверей, не считая закрытые системы, открытые только пользователям с определенным IP?
                                Василий Столейков
                                10 ноября 2016, 08:38
                                1
                                +3
                                НЕТ АБСОЛЮТНОЙ ЗАЩИТЫ, ЕСТЬ ПЛОХИЕ ХАКЕРЫ!
                                Эта истина всегда меня успокаивала. Поэтому менять самую лучшую систему (хоть и несовершенную как и всё остальное) я не собираюсь.
                                Роман Садоян
                                10 ноября 2016, 08:41
                                0
                                ну выходит, что нет полностью безопасных систем?
                                Да.
                                Может быть только если чистые
                                И чистые бывают дырявыми.
                                Получается, что для талантливых специалистов в области взлома вообще нету закрытых дверей
                                Да.
                                не считая закрытые системы, открытые только пользователям с определенным IP?
                                Ну там тоже можно IP подменить или проверку обойти…

                                Все от случая к случаю.
                        r5uY40
                        09 ноября 2016, 14:37
                        +3
                        Классная идея про сервис! Ещё, мне кажется, будет полезен стендэлон компонент поиска и устранения уязвимостей и защиты от атак по аналогии с RSFirewall! и Admin Tools из мира Джумла. RSFirewall пользуюсь постоянно на своем старинном сайте — спасает.
              Вася
              09 ноября 2016, 18:32
              +2
              Ну а обновление закрывающее брешь MODXеры выпускать собираются? Ни чего не слышно?
              Василий Столейков
              11 ноября 2016, 09:47
              1
              0
              Не в тему немножко:

              Хорошо бы чтобы при нажатии на этот правый значок обновления комментариев, происходил скроллинг до первого нового комментария, а не просто показ количества новых комментариев…
              А то захожу в эту тему уже который раз, тут уже 239 комментов и приходится снова скроллить всю эту простыню в поиске малозаметных на моём экране желтоватых комментариев…
              Я вначале почему-то думал, что эта кнопочка обновления так и работает…

              Либо снизу поставить ещё один значок стрелочки, который бы скроллил по новым комментариям если они есть, а то текущий значок сразу и сбрасывает их…

              Но это так, мысли вслух, просто накипело — уже наверное раз 50 заглядывал в эту тему и возможно это не последний раз… ))
                Василий Наумкин
                11 ноября 2016, 09:57
                +2
                Либо нажимать на количество комментариев под кнопкой обновления.
                  Василий Столейков
                  11 ноября 2016, 10:02
                  1
                  +4
                  О, не знал, спасибо, иду проверять…
                  А то в соседней распухшей теме про стоимость компонентов у меня такая же история была.
                  Спасибо за неочевидный для меня лайфхак!

                  P.S. Проверил — это действительно круто, то что напрашивалось я даже не догадался что уже реализовано, facepalm.jpg, извини за зря поднятые волны, но может есть и другие как я ))))
              Дмитрий Меркурьев
              11 ноября 2016, 16:23
              +2
              Может быть немного наивное предположение, но все же озвучу.
              Как я понял взлом осуществляется через коннекторы, А если через htaccess отправлять запросы переданные на любой connector.php на свой скрипт, в нем фильтровать весь возможный sql и вызывать уже оригинальный connector.php с очищенными параметрами. Или такой подход не подойдет?
              Paul B.
              11 ноября 2016, 20:11
              0
              А эта пробелма относится к версии modx 2.5.1? Там в описании изменений тоже какие-то дырки от инъекций закрыли. Только я не прочел какие.
                Николай
                11 ноября 2016, 20:33
                0
                Эта версия как бы давно выпущена, все ею давно уже пользуются
                  Paul B.
                  12 ноября 2016, 23:06
                  0
                  Я не обновлял с 2.5.0 Поэтому решил уточнить. Спасибо
              Дмитрий Суворов
              12 ноября 2016, 18:24
              +1
              modx.com/get-modx/security

              MODX Revolution was architected from day one with security in mind. All database operations using Revo’s public APIs use xPDO. This is an intermediate database layer, based on the PHP PDO project (recently adopted by Drupal), that ensures code is properly sanitized before being saved to the database. This aims to prevent SQL injection attacks common in many web platforms today.

              Действительно очень прискорбно, что у разработчиков MODX есть время на обновление собственного сайта, переработку его практически с нуля, сбору статистики о беспрецедентной безопасности, но нет времени бросить всё (на сколько известно, так как новостей что идет работа какая-то в этом направлении нет никаких) и как ужаленные в жопу закрывать все дыры. А они вообще в курсе всей этой волны, или они знают только о её начале?
                Владимир
                12 ноября 2016, 18:28
                +1
                а то они там должны написать? все пропало?)))
                  Дмитрий Суворов
                  12 ноября 2016, 18:39
                  0
                  не знаю) Просто MODX он же себя позиционирует как безопасная система — а это состояние нужно регулярно совершенствовать. А следовательно — я не могу понять их реакцию на последние новости. Тем более нынешняя проблема вероятнее всего существует столько, сколько существует MODX.
                    Николай Ланец
                    12 ноября 2016, 18:41
                    +4
                    Думаю, просто трудности перевода. Они не до конца понимают проблемы. Написал сейчас дополнительно Райну в личку, сейчас должны зашевелиться.