Критическая уязвимость в MODX Revolution
Сильно в детали лезть не буду, просто скажу, что сейчас любой MODX Revo сайт потенциально уязвим. Дыра позволяет выполнить SQL-инъекции, в том числе с созданием на сайте привилегированных пользователей.
Базовые методы противодействия: подмена дефолтных системных папок (особенно connectors) и, главное — смена префикса таблиц. Так как далеко не все это делают, то можно сказать, большинство сайтов в зоне опасности. Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.
Если кто на уже рабочем сайте хочет префиксы сменить, я описывал метод здесь.
P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
Базовые методы противодействия: подмена дефолтных системных папок (особенно connectors) и, главное — смена префикса таблиц. Так как далеко не все это делают, то можно сказать, большинство сайтов в зоне опасности. Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.
Если кто на уже рабочем сайте хочет префиксы сменить, я описывал метод здесь.
P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
Комментарии: 340
Мой способ — настройка базовой авторизации через веб-сервер.
Это запрещает любые запросы в manager, core и connectors без дополнительного логина и пароля, которые проверяет не MODX на PHP, а сам Nginx.
Запрет по IP, конечно, еще лучше.
Это запрещает любые запросы в manager, core и connectors без дополнительного логина и пароля, которые проверяет не MODX на PHP, а сам Nginx.
Запрет по IP, конечно, еще лучше.
С удовольствием, кстати, использую везде, где у меня modx. Спасибо за идею!
Василий, это одно из средств, которое позволяет закрыть пару дверей, но не решает проблему в принципе. Проверь в модсторе, не судо ли я там? Подозреваю, что уже. Во всяком случае я сумел себе fullname сменить и модифицировать один из своих документов. Это как раз стало возможно из-за того, что у тебя базовые префиксы используются. Да, я не могу зайти в админку, так как она закрыта, но я запросто могу сейчас создать сниппет, который при заходе на страницу сработает, сделает копии папок манагер и коннекторс, и там уже не будет двухфакторной. Или просто тупо шелл создаст.
Я прекрасно понимаю твою радость, но будь добр не лазить на чужие рабочие проекты.
Речи нет о радости. Речь есть о реальных проблемах в безопасности. Я всего лишь показал наглядно, так как ты не часто прислушиваешься к словам.
В общем, проблему я обозначил, а тебе уже решать исправлять ее или нет.
В общем, проблему я обозначил, а тебе уже решать исправлять ее или нет.
Так ты тогда хоть напиши где именно проблема.
Потому что менять префиксы на всех MODX сайтах мне совершенно не улыбается.
По логам вижу, что ты долго долбился на коннектор от Office, видимо опять что-то с переключением контекстов. Если так — то мне как минимум нужно исправить свои компоненты, которые много где уже установлены.
Потому что менять префиксы на всех MODX сайтах мне совершенно не улыбается.
По логам вижу, что ты долго долбился на коннектор от Office, видимо опять что-то с переключением контекстов. Если так — то мне как минимум нужно исправить свои компоненты, которые много где уже установлены.
Это все та же проблема с префиксами (ссылка на статью в топике написана). Проблему модификации SQL-запросов практически не реально решить, так как много где принимаются извне параметры типа where, limit, sort, dir и т.п., потому вопрос как именно запрос прошел — не актуален (хотя да, с контексами я тоже проблему нашел, но это не относится именно к твоему случаю). Вопрос в том, что чтобы воспользоваться данной уязвимостью, надо знать префикс таблиц, так как надо выполнить запросы типа update table_name… Не зная префикса, нельзя указать корректное название таблицы. Без этого атаку не провести. Поэтому я и говорю: указывайте сложные префиксы для таблиц, будет гораздо гораздее.
Прекрасно.
Впервые серьёзно жалею, что работаю с MODX.
Впервые серьёзно жалею, что работаю с MODX.
Да не надо жалеть. Уязвимости есть везде, тем более там, где есть передаваемые параметры. Другое дело, есть возможность решить проблему или нет. Здесь эта возможность есть. Хотя с коннекторами там сейчас все очень плохо. Есть мысли как улучшить защищенность MODX-а, но это довольно серьезные трудозатраты. Может в будущем.
Николай, я правильно понял, что для атаки требуется минимальный хоть и урезанный но админ доступ?
Нет. Я нашел способ без каких-либо прав. Точнее методов значительно больше, чем один, но все они сводятся к необходимости знать названия таблиц (с учетом префиксов).
OMG
Печально.
У меня хоть на важном для меня сайте префиксы изменены, но их длина и сложность не ахти.
Т.е. бежать кругом дистрибутив advanced заливать и менять все и вся…
Печально.
У меня хоть на важном для меня сайте префиксы изменены, но их длина и сложность не ахти.
Т.е. бежать кругом дистрибутив advanced заливать и менять все и вся…
Т.е. бежать кругом дистрибутив advanced заливать и менять все и вся…А что, advanced умеет менять префиксы таблиц на готовом сайте? То есть переименовывать их?
При установке, да, в ином случае не приходилось, но вроде предлагает при обновлении (или нет?).
PS Скрипт смены префиксов видел на modxclub еще утром.
PS Скрипт смены префиксов видел на modxclub еще утром.
В xPDO метод обновления таблиц не дописан, так что вряд ли есть возможность при обновлении сайта обновить им таблицы.
Но ведь предлагает при расширенном обновлении поменять префикс. Сейчас завершу на пробном сайте напишу.
Нифига не проходит joxi.ru/nAyz3VMFX8kDRr
Ага, только что тоже самое получил.
Ранее расширенные настройки воспринимал как такую возможность, но она не требовалась так срочно, а сейчас оказалось что расширенные настройки при обновлении ни чего не позволяют толком поменять. Печаль (.
Ранее расширенные настройки воспринимал как такую возможность, но она не требовалась так срочно, а сейчас оказалось что расширенные настройки при обновлении ни чего не позволяют толком поменять. Печаль (.
Скрипт я написал, с ним не должно возникнуть никаких проблем.
Спасибо, видел этот скрипт еще утром. Пошел ставить консольку и менять все и вся. Пока за пределами MODHOST, ибо полагаю, что Василий добавит опцию смены префикаса таблиц. Генерацию кастомного префикса при создании нового сайта он уже добавил.
Да, advanced, предлагает при обновлении внести изменения в настройки базы данных, но на самом деле все не так)
Видимо задумывалось как возможность, но не доделано.
Проверка базы данных: Нет такого префикса таблиц в базе данных!
Видимо задумывалось как возможность, но не доделано.
Видимо задумывалось как возможность, но не доделано.Если под капот залезть, там много чего можно найти из того, что задумывалось, но не доделалось))
Поменять префикс у сайта дело 5 минут, если не торопится. Единственный небольшой неудобств — обновление версии. Для пользователей хостинга modhost.pro вообще ужас ужас. ))
Решение. Сделать сниппет с кодом Николая (я где-то год назад давал пример файла с таким же кодом) и перед обновлением вызывать его, чтобы переименовать таблицы с префиксом modx_, а после обновления возвращать опять свой уникальный.
Как мечта — сделать на modhost.pro, чтобы префикс при обновлении или автоматически подцеплялся из файла настроек или запрашивать его у пользователя.
В MODX параметры запроса фильтруются. Может ужесточить правила и вырезать нахрен слова «insert», «update» и «delete» из запроса?
Решение. Сделать сниппет с кодом Николая (я где-то год назад давал пример файла с таким же кодом) и перед обновлением вызывать его, чтобы переименовать таблицы с префиксом modx_, а после обновления возвращать опять свой уникальный.
Как мечта — сделать на modhost.pro, чтобы префикс при обновлении или автоматически подцеплялся из файла настроек или запрашивать его у пользователя.
В MODX параметры запроса фильтруются. Может ужесточить правила и вырезать нахрен слова «insert», «update» и «delete» из запроса?
Для пользователей хостинга modhost.pro вообще ужас ужас. ))А там в чем проблема? Раз изменить префикс таблиц, потом обновление MODX-а же проходит с учетом префикса.
Разве? Насколько я помню, Василий писал, что обновление работает только для префикса modx_. Поэтому я когда переехал на modhost вернул таблицам стандартный префикс, чтобы пользоваться этой возможностью.
А вырезать из параметров запроса команды sql поможет решить проблему безопасности?
А вырезать из параметров запроса команды sql поможет решить проблему безопасности?
Разве? Насколько я помню, Василий писал, что обновление работает только для префикса modx_.Это уже у Василия надо спрашивать. Сам MODX при обновлении учитывает префиксы. Более того, даже если взять Vapor, то можно снять снимок, создать новый сайт с кастомным префиксом, накатить на этот сайт созданный пакет, и все таблицы будут созданы и/или обновлены с учетом префикса.
А вырезать из параметров запроса команды sql поможет решить проблему безопасности?Поможет. Но как отличить опасный запрос от не опасного? К примеру, здесь кто-то захочет найти статьи по запросу «xPDO update», и что ему выдавать? А что делать с запросами uupdatepupdatedupdateaupdatetupdatee? Рекурсивную чистку писать? Короче, это все заморочки лишние.
К примеру, здесь кто-то захочет найти статьи по запросу «xPDO update», и что ему выдавать?Мда.
Но как решение для базовой версии можно сделать такую настройку. Например, сейчас есть такая настройка «Разрешить передачу HTML тегов в POST запросах». А сделать еще типа такой — «Вырезать команды SQL». Если у пользователя простой сайт, то по крайней мере, он будет в безопасности. Поставил MODX и спит спокойно.
А если сайт использует запросы, то граммотный программист должен отключить эту настройку и переименовать таблицы. Как вариант.
Это все слишком сложно.
Авторам MODX можно подсмотреть как это сделано у других.
В MODX параметры запроса фильтруются. Может ужесточить правила и вырезать нахрен слова «insert», «update» и «delete» из запроса?Я не сторонник совсем все закрывать, так как сам часто пишу сложные не стандартные запросы, а с этим в xPDO итак все сложно, и если на уровне xPDO-запросов все будет закрыто, то это меня не будет радовать. Так что я буду просто менять префиксы.
Для пользователей хостинга modhost.pro вообще ужас ужас. ))И не говори!
Вообще непонятно, как дальше жить. Думаем закрываться теперь.
Вообще Марк и вся команда должны Николаю коньяк ИкСо подогнать за такое.
Дождёшься от них, держи карман шире.
Евгения Борисова, помню, в итоге вообще обматерили.
Евгения Борисова, помню, в итоге вообще обматерили.
Потому что он выложил в открытый доступ дыру.
Уверен на 100%, что данной дырой серьёзные пацаны уже давно пользовались.
Интересно, а в том же WP эта дырка закрыта?
Уверен на 100%, что данной дырой серьёзные пацаны уже давно пользовались.
Интересно, а в том же WP эта дырка закрыта?
Ну, иначе высокое руководство не считало те дыры — дырами, и отмахивались, мол так и задумано.
Пришлось доказывать на их же сайте.
И, насколько я помню, Евгений еще далеко не всё показал. Не удивлюсь, если и про сегодняшний баг он давно в курсе, просто стимула рассказывать авторам MODX больше нет.
Пришлось доказывать на их же сайте.
И, насколько я помню, Евгений еще далеко не всё показал. Не удивлюсь, если и про сегодняшний баг он давно в курсе, просто стимула рассказывать авторам MODX больше нет.
Я тогда очень удивился легкомысленности авторов MODX.
Евгения Борисова, помню, в итоге вообще обматерили.
...
Ну, иначе высокое руководство не считало те дыры — дырами, и отмахивались, мол так и задумано.Кстати, пока Николай не залез к тебе, ты тоже отмахнулся. И ответная реакция у тебя тоже практически матерная.
Пришлось доказывать на их же сайте.
Кстати, на тот момент считалось, что доступ в админку необходим и мой способ вполне себе работает.
А вот чуть позже Николай залез без админки, и сразу на рабочий проект и написал UPD2 у себя в заметке.
И еще кстати — в текущей заметке этого UPD2 до сих пор нет. Как считаешь, большая ли разница, когда для эксплуатации уязвимости нужен доступ в админку, а когда нет?
Но а так да, всё один в один, прям идентичные ситуации.
А вот чуть позже Николай залез без админки, и сразу на рабочий проект и написал UPD2 у себя в заметке.
И еще кстати — в текущей заметке этого UPD2 до сих пор нет. Как считаешь, большая ли разница, когда для эксплуатации уязвимости нужен доступ в админку, а когда нет?
Но а так да, всё один в один, прям идентичные ситуации.
Могу ошибаться, но по-моему, вот это было изначально в статье.
Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.Про доступ в админку тут не слова. Лично мне было интересно проверить, но я не рискнул. Страшновато.
Да я вроде тоже не предлагал демонстрировать это на моих проектах, не правда ли?
Но Николая это не остановило.
Но Николая это не остановило.
Ну я вроде и не сломал ничего, так, чуть себя подправил да документ один свой… Ну и чуть больше о структуре магазина узнал (только в плане какие типы сущностей используются, не более).
В общем, произвёл взлом чужого сайта в личных целях, молодец.
Хоть бы сообщество ломал, а не магазин, который приносит доход и тебе, в том числе.
Хоть бы сообщество ломал, а не магазин, который приносит доход и тебе, в том числе.
Василий, я никому не навредил, и ничьи данные даже не смотрел (только свои). Я даже не смотрел сколько там пользователей у вас. Вообще ничего такого.
Да я вроде тоже не предлагал демонстрировать это на моих проектах, не правда ли?Как и авторы MODX. Но там ты встал на сторону Евгения, а тут на противоположную. Непоследовательно.
Одно дело у меня на сайте пошалить, а другое дело обратить внимание человека, на котором лежит большая ответственность — у многих из нас сайты размещаются на modhost.pro, который работает на MODX, и это вызывает обоснованное беспокойство.
а тут на противоположную.Ну, а результатом то явилось улучшении безопасности :)) За что Николаю спасибо!
Сережа, ты по-русски не понимаешь?
Еще раз: на момент публикации моего комментария не было известно, что для эксплуатации уязвимости не нужен вход в админку.
Достаточно было дописать в заметке, что уязвимость можно эксплуатировать хоть откуда, и всё. Я не просил её доказывать, я не отмахивался от неё. Мы её и по почте обсудили с Николаем — и там он тоже не сказал, что доступ в админку уже не нужен.
Наверное, это недоработка Николая, что он недостаточно рассказал о серьёзности проблемы.
Более того, префикс таблиц теперь приравнивается к паролю супер-админа, его нужно хранить за семью печатями! Вот что нужно было написать, а не как сейчас.
Но если ты считаешь, что я отмахнулся от проблемы и повёл себя как мудак — твоё право. У меня нет желания это обсасывать второй день подряд.
С моей стороны вопрос решен, дальше дело за ребятами из MODX.
Еще раз: на момент публикации моего комментария не было известно, что для эксплуатации уязвимости не нужен вход в админку.
Достаточно было дописать в заметке, что уязвимость можно эксплуатировать хоть откуда, и всё. Я не просил её доказывать, я не отмахивался от неё. Мы её и по почте обсудили с Николаем — и там он тоже не сказал, что доступ в админку уже не нужен.
Наверное, это недоработка Николая, что он недостаточно рассказал о серьёзности проблемы.
P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.И что, блин? Это вообще теперь не имеет никакого смысла, если любой сайт можно сломать хоть откуда, если у него стандартный префикс таблиц.
Более того, префикс таблиц теперь приравнивается к паролю супер-админа, его нужно хранить за семью печатями! Вот что нужно было написать, а не как сейчас.
Но если ты считаешь, что я отмахнулся от проблемы и повёл себя как мудак — твоё право. У меня нет желания это обсасывать второй день подряд.
С моей стороны вопрос решен, дальше дело за ребятами из MODX.
Но если ты считаешь, что я отмахнулся от проблемы и повёл себя как мудак — твоё право.
И что, блин? Это вообще теперь не имеет никакого смысла, если любой сайт можно сломать хоть откуда, если у него стандартный префикс таблиц.Вот тут оговорочка — смысл есть. Дело в том, что пока патч не примут (и пока не обновятся до последней версии), префикс можно будет тупо получить из настроек системы. Сейчас процессор жестко проверяет на авторизацию в mgr, нельзя тут переопределить контекст. А если пользователь авторизован в mgr, то он может получить настройки, в том числе и префикс таблиц.
Более того, префикс таблиц теперь приравнивается к паролю супер-админа, его нужно хранить за семью печатями! Вот что нужно было написать, а не как сейчас.
Василий, скажи, сейчас тут сайт/manager/?a=system/info виден префикс, и если не с суперадминскими правами, то ли есть вариант попасть залогиненному в админку на данную страницу?
PS прочел коммент Николя ниже… о получении префикса из системных настроек. Вопрос снят…
PS прочел коммент Николя ниже… о получении префикса из системных настроек. Вопрос снят…
сайт/manager/?a=system/info виден префиксЭто защищенный процессор, надо иметь админские привилегии.
Я так и не понял чем смена префикса вас обезопасит
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users'
Хороший вопрос.
Надеюсь, что результат выполнения запроса увидеть никак нельзя, но я уже ни в чём не уверен.
Надеюсь, что результат выполнения запроса увидеть никак нельзя, но я уже ни в чём не уверен.
Евгений, а есть способ защиты от этого?
Можно к файлам в connectors перекрыть доступ, но это только, если статический IP у манагеров, админов.
Можно к файлам в connectors перекрыть доступ, но это только, если статический IP у манагеров, админов.
В свое время я пытался искать пути решения. Но политика разработчиков убила и я плюнул. Они каждый раз просто меняют вектор атаки. В прошлый раз эта уязвимость позволяла подменять контексты и рулить всем сайтом. Они добавили проверку прав доступа.
Теперь эта же уязвимость но в другом месте. И опять, все идет по какому-то странному пути — закрывают отображение префикса из конфигов, которые доступны только из админки.
Коли так, то вообще всю админу нужно удалять. Не понимаю, зачем делать проверку на расширения доступные к загрузке, если пользователь может переименовать файл!!! Заливаем .jpg и меняем на .php => PROFIT!
В общем бред, бред и еще раз бред.
Теперь эта же уязвимость но в другом месте. И опять, все идет по какому-то странному пути — закрывают отображение префикса из конфигов, которые доступны только из админки.
Коли так, то вообще всю админу нужно удалять. Не понимаю, зачем делать проверку на расширения доступные к загрузке, если пользователь может переименовать файл!!! Заливаем .jpg и меняем на .php => PROFIT!
В общем бред, бред и еще раз бред.
Мляха-буха, жаль тут нет смайлика с битьем головой об стену. Вставил бы 20. Чего делать-то?
Не понимаю, зачем делать проверку на расширения доступные к загрузке, если пользователь может переименовать файл!!! Заливаем .jpg и меняем на .php => PROFIT!А, ну это да, есть такое дело)))
Я так и не понял чем смена префикса вас обезопаситДа, такой запрос можно выполнить, но вот увидеть его результаты — очень сложно. Модифицировать запрос так, чтобы подменить ему выводимые колонки — такого не получалось. Получалось только выполнить втемную. А втемную — это уже никак, если не знаешь префиксы. Сам попробуй сломать сайт с кастомными префиксами.
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%users'
Сам попробуй сломать сайт с кастомными префиксами.Это сейчас на слабо проверка? Банальный брутфорс по 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)
Это сейчас на слабо проверка?Никакой проверки на слабо. Я описываю сейчас не теории, а реальный результат. То есть пошел, сломал, написал. Ты сейчас теоритизируешь (при всем моем уважении.)
Банальный брутфорс по 1 символу.Если ты вдруг читал исходную статью, то там я писал устанавливать сложные префиксы. Даже немного математики было:
Если у вас будет базовый префикс modx_ или какой-то простой типа prfx_, то методом перебора можно будет довольно быстро выполнить атаку (здесь всего примерно 30^4, то есть 810 000. По 10 запросов в секунду за 22 часа можно перебрать все возможные варианты). По этой причине советую сложные префиксы давать типа My_PrfX234_. Здесь уже и маленькие, и большие буквы, и цифры, а это уже 70^10 или 2824752490000000000 вариаций. Вот это уже просто времени не хватит подбирать.Ты сейчас вообще php-код приводишь. То есть предполагается, что твой скрипт будет работать на стороне целевого сервера уже? Если у тебя там php твой работает, то какой смысл? Уже все сломано. А если ты им просто фигачишь запросы на целевой сервер, то с учетом задержек даже идеальных 10 мсек с учетом вычислений выше как быстро ты получишь результат?
пошел, сломал, написал.Проходили. Даже последствия обсуждали. Спасибо, но пусть я лучше для тебе останусь теоретиком.
Спасибо, но пусть я лучше для тебе останусь теоретиком.Ну ОК, не поспоришь))
Кстати, хочешь еще больше жути? Я только что провел успешную атаку через коннектор компонента Gallery. При чем это касается большинства сторонних компонентов. На твоем tickets так же прошло. pdoTools не позволяет. Суть в том, что у них них же тоже коннекторы есть, и они в итоге долбятся в системный коннектор. А там уже и в системные процессоры достучаться можно.
И здесь опять-таки, спасают кастомные префиксы таблиц.
И здесь опять-таки, спасают кастомные префиксы таблиц.
На твоем tickets так же прошло. pdoTools не позволяет.К слову, здесь хотел бы показать как я борюсь с подобным. Уже очень давно у меня практика принята все входящие вызовы процессоров проверять жестко. Здесь из коннектора запросы могут идти только на один паблик-процессор, где уже на уровне метода getInstance() решается можно запрошенный процессор выполнить или нет. Да, не очень удобно, зато гораздо надежней.
И еще кстати — в текущей заметке этого UPD2 до сих пор нет.Если эту тему развивать, то там уже надо UPD3, писать, UPD4 и еще несколько. К примеру, помнишь же игры с контекстами, которые тогда Женя проводил, и которые и послужили тем грубым багом, из-за которого сайты массово валили? Это же я тогда Женю консультировал joxi.ru/LmGVQx0uRQbx5r
Понятно дело, что он многое сам домыслил и доделал, но сама бага мне была понятна и очевидна, и я про нее говорил Райну тоже, но он действительно отмахнулся, а я не стал развивать тему и ломать им сайт. Так вот, багу не совсем закрыли, точнее, сама архитектура MODX-а такова, что все эти уязвимости во многом являются не багами, а фичами. Это такой механизм безопасности. И уязвимости можно задействовать даже с передачей существующего контекста, если политики не правильно настроены (ведь даже аноним по сути автоматом авторизован в контексте web, а это значит уже НЕ НЕ авторизован). Кстати, что интересно, воспользоваться этим механизмом позволяет как раз JS-компонент MODx, который не сложно подключить даже на фронт сайта просто через редактирование HTML-а, а если можно попасть на входную страницу админки, так вообще проблем нет никаких.
По сути, если ты хочешь дать кому-то права на выборки документов и прочих элементов, давать их надо не на контексты, а на конкретные элементы. Но тут проблема в неудобстве сразу встает — если ты хоть кому-то дал права на какие-то группы элементов, значит все остальные сразу лесом пойдут, то есть придется всем остальным так же права прописывать.
Есть у меня одна хорошая, но довольно сложная статья, которая несколько проливает свет на все это.
А так можно, к примеру, получить список всех сниппетов и плагинов на сайте. Да, модифицировать их не получится, но если проанализировать их кода хорошенько, можно попробовать найти какие-нибудь логические ошибки, особенно там, где используются механизмы формирования ключей для автоматической авторизации пользователей, проведения платежей и т.п.
В общем, точек входа довольно много, можно несколько отдельных статей написать про них, поэтому я не стал много воды лить, я просто привел максимально эффективное на мой взгляд решение. Практически все эти проблемы решаются сменой префиксов таблиц и сокрытием папки коннекторов.
Это сообщение было удалено
Полная переписка — это перемешивание сразу нескольких тем, ну да не важно. Ты таким образом хотел сказать, что мне не была известна эта уязвимость или что именно? Или обсуждение данного вопроса ты не считаешь консультированием?
Как скрыть папку коннекторов? если все плагины и расширения передают их в теле документа?
Правильные компоненты пляшут от системных настроек assets_url, connectors_url и т.п. Правите системные настройки и все, все нормальные компоненты должны сменить УРЛы формируемые.
И, насколько я помню, Евгений еще далеко не всё показал. Не удивлюсь, если и про сегодняшний баг он давно в курсе, просто стимула рассказывать авторам 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. Да простит меня неуловимый ДЖО и его разработчики:-)))))
Может поэтому в Eloquent есть отдельно Raw expressions?
Вообще, грусть-тоска. Я наивно полагал, что работа через xPDO меня как-то защищает. Очевидно, это всё в прошлом и нужно пересматривать все свои дополнения.
Спасибо за PR в pdoTools!
Вообще, грусть-тоска. Я наивно полагал, что работа через xPDO меня как-то защищает. Очевидно, это всё в прошлом и нужно пересматривать все свои дополнения.
Спасибо за PR в pdoTools!
$modx->getObject('modResource', array(А это что должно делать? Кроме возможности вставить подзапрос на выборку ничего не увидел, а update-запрос здесь не увидел возможность вставить.
'modResource.id`IN (SELECT 1,1,1,1,1,1,1,1,1,1,1,1,1,1)#' => ''
));
Кстати, если поиграться с запросом, можно даже такое получить: SQL injection attempt detected.
А еще есть возможность создания произвольных файлов на сервере.Есть или была? Я проверял все процессоры на работу с файлами, они защищены. Но может что-то проморгал.
А это что должно делать? Кроме возможности вставить подзапрос на выборку ничего не увиделУчим матчасть на тему слепой SQL-injection. Кто знает, тот поймет. И да, в коде специально куча ошибок. Это лишь демонстрация общего принципа, чтобы нельзя было копипастом воспользоваться.
Кстати, если поиграться с запросом, можно даже такое получить: SQL injection attempt detected.Это фишка хостера
Учим матчасть на тему слепой SQL-injectionХорошо, поверю тебе на слово, что можно в непроцедурный SQL воткнуть какую-то процедуру, чтобы весь перебор прошел на стороне сервера.
Это фишка хостераЭто фишка xPDO.
Хорошо, поверю тебе на слово, что можно в непроцедурный SQL воткнуть какую-то процедуру, чтобы весь перебор прошел на стороне сервера.))))))))) Ок. Пусть это так теперь называется))))
Это фишка xPDO.Тогда расходимся. Безопасность на высоте.
Тогда расходимся. Безопасность на высоте.Шутка зачтена))
Обходится эта проверка на разЭто фишка 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)")
]);
Вот именно по этому я и говорил выше, что я против слишком серьезной безопасности. Сейчас xPDO даже не позволяет FIND_IN_SET() использовать, приходится тоже исхитряться (типа лишних пробелов :)). И если для обеспечения безопасности надо запретить юнионы — я категорически против. Добавить фильтрацию запросов (типа как это в modX::sanitize сделано) — это я не против. Сам xPDO гайки закручивать — против.
Есть или была? Я проверял все процессоры на работу с файлами, они защищены. Но может что-то проморгал.Есть. Ищи в phpthumb
Есть. Ищи в phpthumbЕго я тоже смотрел. Да, он не сильно защищен в плане авторизации, но он жестко закрыт по экшену, вызывается только его процессор. А там получение только картинок. Может какая проблема есть в самом phpThumb, но я его не очень знаю.
Т.е. если никого не пускать в админку и не делать загрузку файлов на сайте можно спокойно спать?
Спокойно спать можно если не делать сайты на MODX)). По сабжу — не юзать phpthumb, не юзать getObject без валидации данных, не пускать в адинку, экранировать modx теги, и бла-бла-бла…
Спокойно спать можно если не делать сайты на MODX)).А на чём? Ларавел? Несколько лет назад также говорили про джумлу и WP.
А на чём? Ларавел?Каждый выбирает сам. Свой путь я выбрал. Тему MODX мониторю просто чтобы не выпадать из тренда, но уже не принимаю никаких действий как разработчик.
Я останусь на MODX. Мне он нравится :)
Каждый выбирает сам. Свой путь я выбрал.Если не секрет, скажи тихонько только мне :)
Сделать свой modx на симфони))))
На сколько я понимаю, друпал уже попробовали. Вроде как не очень вышло.
MODX Evo только для визиток. Но планирую переходить на OctoberCMS. Эта CMS основана на базе Laravel. Один из разработчиков русский парень. Продуманная схема монетизации. Один из крупных русских проектов сделан на этом движке — www.alfa-forex.ru (дочка альфа-банка).
С шаблонными интернет-магазинами я не работаю, поэтому тут посоветовать ничего не могу. Ну а вообще Laravel — для всех остальных проектов сложнее визитки.
С шаблонными интернет-магазинами я не работаю, поэтому тут посоветовать ничего не могу. Ну а вообще Laravel — для всех остальных проектов сложнее визитки.
Понял. Спасибо! Из этого делаю вывод, что ларавел не имеет таких проблем безопасности. :)
Тренды говорят, что нужно уходить в JS на ноду, ставить метеор или экспресс, но это как идти вые***аться в чужой двор. Там своих проблем должно хватать.
Laravel сейчас топ-1 PHP фреймворк. Если важна скорость, то можно посмотреть в сторону Phalcon, а если какое-то Enterprise решение, то на мой взгляд — Symfony.
Для всего остального есть Laravel :D
P.S.: Писать на Laravel приятно. Но куда девать любовь к MODX?
Laravel сейчас топ-1 PHP фреймворк. Если важна скорость, то можно посмотреть в сторону Phalcon, а если какое-то Enterprise решение, то на мой взгляд — Symfony.
Для всего остального есть Laravel :D
P.S.: Писать на Laravel приятно. Но куда девать любовь к MODX?
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 теги обрабатываются не везде, а только там, где это нужно. Но куда девать любовь к MODX?Может вернуть Джейсону обратно? Как мне кажется, автор должен быть заинтересован в совершенстве своего детища. А уж вопросы с безопасностью вообще должны решаться в доли секунды. Например, Цукерберг платит за найденные уязвимости. А тут нашли, сказали, наконец, доказали на собственном сайте, и только после этого они решили пошевилиться (речь о Евгении Борисове). Да и сейчас, видишь ли, у них выходные. Охренеть. «Такой хоккей нам не нужен».
Не стоит сравнивать проприетарный софт с опенсорсом. С последним сплошь и рядом такая фигня — автор устал, автору некогда, автор рубит бабло, автор вспотел — множество причин, почему автор навалить сорок куч на на «совершенство своего детища».
Предлагаешь не юзать OpenSource?
Авторы позиционируют MODX как безопасную CMS, а тут выясняется, что это не так, что они не занимаются закрытием дыры, а просто меняют вектор атаки.
Я был вообще не в курсе таких проблем, даже после публикации этой статьи, пока не отписал Евгений Борисов. Я не менял префиксы таблиц, я просто закрыл доступ к /core/ /connectors/ и /manager/ там где можно, но есть проекты, где я сделать это не могу.
На мой взгляд именно Open Source способствует поиску уязвимостей. Ведь автор не один, комьюнити MODX это не комьюнити AltoCMS или Livestreet, где продукт пилят 1-2 разработчика.
Наличие такой дыры заставило серьезно задуматься о дальнейшей разработки проектов на MODX CMS.
Авторы позиционируют MODX как безопасную CMS, а тут выясняется, что это не так, что они не занимаются закрытием дыры, а просто меняют вектор атаки.
Я был вообще не в курсе таких проблем, даже после публикации этой статьи, пока не отписал Евгений Борисов. Я не менял префиксы таблиц, я просто закрыл доступ к /core/ /connectors/ и /manager/ там где можно, но есть проекты, где я сделать это не могу.
На мой взгляд именно Open Source способствует поиску уязвимостей. Ведь автор не один, комьюнити MODX это не комьюнити AltoCMS или Livestreet, где продукт пилят 1-2 разработчика.
Наличие такой дыры заставило серьезно задуматься о дальнейшей разработки проектов на MODX CMS.
Предлагаю не сравнивать несравниваемое.
Мое личное, сугубо субъективное мнение — форма собственности на продукт никак не влияет на его качество. От слова «совсем», усиленного наречием «вообще». Ну, и на поиск уязвимостей это так же мало влияет. Комьюнити, может, и большое, но окончательные точки расставляет ограниченное количество людей — что в открытом, что в закрытом коде. При этом, заметь, что если это не твоя работа, приносящая тебе деньги, то срочно бросать приносящую доход деятельность (семью, шашлыки и прочие радости жизни) ради хобби — несколько странно. Я к тому, что не нужно ждать чудес.
Однако опенсорс предполагает, что если не нравится работа автора, тащишь себе в норку, распускаешь на нитки и вяжешь волшебство по своему разумению.
Серьезно задумываться можно и без наличия дыр где бы то ни было :) У нас, гадство, работа такая :)
Мое личное, сугубо субъективное мнение — форма собственности на продукт никак не влияет на его качество. От слова «совсем», усиленного наречием «вообще». Ну, и на поиск уязвимостей это так же мало влияет. Комьюнити, может, и большое, но окончательные точки расставляет ограниченное количество людей — что в открытом, что в закрытом коде. При этом, заметь, что если это не твоя работа, приносящая тебе деньги, то срочно бросать приносящую доход деятельность (семью, шашлыки и прочие радости жизни) ради хобби — несколько странно. Я к тому, что не нужно ждать чудес.
Однако опенсорс предполагает, что если не нравится работа автора, тащишь себе в норку, распускаешь на нитки и вяжешь волшебство по своему разумению.
Серьезно задумываться можно и без наличия дыр где бы то ни было :) У нас, гадство, работа такая :)
просто закрыл доступ к /core/ /connectors/ и /manager/ там где можноЭто проблему не решает. Есть куча точек в хода из различных компонентов, которые оставляют коннекторы в /assets/components/
В общем печалька. Решения нет. Я думаю даже в ближайшем будущем не будет — все сведется к тому, что данные нужно фильтровать заранее. Так, как это делают до сих пор в MODX Evo. Так что получается, что xPDO далеко не PDO, а псведо-pdo с частичной обработкой входных данных + куча костылей.
Так что получается, что xPDO далеко не PDOЖень, а при чем тут это? Это же PDO выполняет запрос к базе данных, а не xPDO. Это он, по идее, должен следить за состоянием запроса и инъекции высматривать.
Есть куча точек в хода из различных компонентов, которые оставляют коннекторы в /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();
}
...
$auth = !empty($modx->user) && isset($_REQUEST['HTTP_MODAUTH']) && $_REQUEST['HTTP_MODAUTH'] == $modx->user->getUserToken('mgr');Сергей, то есть ты хочешь, чтобы все коннекторы обязательно были завязаны на контекст mgr и авторизацию в нем? Даже картинки, выводимые через phpThumb? Вообще все? И обновление собственного профиля в админке? Серьезно?
if (!$auth) {
Не надо так делать!
Я писал только про коннектор из modExtra, который используется для создания своих компонентов.
А если заменить на $modx->user->getUserToken($modx->context->key)? Главное, проверить сессию с секретным ключом.
А если заменить на $modx->user->getUserToken($modx->context->key)? Главное, проверить сессию с секретным ключом.
Главное, проверить сессию с секретным ключом.Если это будет контекст web, И что это даст? Личные кабинеты теперь никому не давать? А если давать, значит у пользователя будет этот ключ. Мы же здесь авторизованы.
Как то так.
Сергей, я запросы не со стороннего сервера слал, а из браузера. То есть здесь никаких кроссзапросов.
Сергей, токены отчасти усложнят задачу. Но не решают ее. Грузится страница, берется токен. Затем этот токен и кукиусы подставляются в следующий запрос к уязвимому сценарию.
Йошкин кот. Пошёл изучать laravel.
Там CSRF из коробки работает для ajax запросов, но принцип тот же: токен привязывается к сессии и не меняется на протяжении всей её жизни.
В Joomla так же есть CSRF. И для сплоита под CVE-2016-8869 + CVE-2016-8870 это не стало проблемой.
Может бложек вести будешь?
У Евгения был раньше, а сейчас что-то нет.
У Евгения был раньше, а сейчас что-то нет.
Была такая мысль.
Не стоит сравнивать проприетарный софт с опенсорсом. С последним сплошь и рядом такая фигня — автор устал, автору некогда, автор рубит бабло, автор вспотел — множество причин, почему автор навалить сорок куч на на «совершенство своего детища».А авторы MODX бабло то на чём рубят, на ноде?
Потому, что они не реагировали на багрепорты;-) И это был единственный способ заставить их шевелиться. Увы, но это правда.
Вот этого точно вряд ли дождусь)
В Джумле, начиная с какой-то версии, префикс таблиц генерируется во время установки, либо можно самому задать. Хотя раньше был стандартный. Странно, что в МОДЭКС до сих пор такого нет.
Я переходил с Джумлы, поэтому использую оба способа) Префикс и авторизацию через веб)
Я переходил с Джумлы, поэтому использую оба способа) Префикс и авторизацию через веб)
Большое вам спасибо за находку и предоставленный способ решения проблемы.
Огорчает, когда в любимом движке обнаруживаются такие серьезные проблемы, но отрадно, что это исправимо без серьезных трудозатрат.
Отличная возможность с пользой провести выходные…
Огорчает, когда в любимом движке обнаруживаются такие серьезные проблемы, но отрадно, что это исправимо без серьезных трудозатрат.
Отличная возможность с пользой провести выходные…
Всегда пожалуйста!
Добрый день, получается при обновлении нужно возвращать префикс обратно? Неужели нет возможности задавать префикс при обновлении или только в адванс версии?
Перечитайте комментарии.
Николай, спасибо! По хорошему действительно обновление должно автоматом генерить нестандартные префиксы таблиц.
Надо еще потестировать, что все снипеты нормально работают после смены префикса.
Надо еще потестировать, что все снипеты нормально работают после смены префикса.
Если вы нигде не пишите чистые SQL-запросы (или хотя бы для формирования имен таблиц в таких запросах используете $modx->getTableName($class)), то все у вас будет работать нормально.
Такое чувство что все проигнорировали пост Закалка MODX Revolution (перевод) (15 февраля 2016) от пользователя Алексей Бгатов.
Изменение префиксов таблиц базы данныхВ той статье много полезностей.
Лучше всего это делать при первоначальной установке, но никогда не поздно. Отказаться от дефолтного modx_ в пользу кастомного префикса полезно, поскольку это затруднит работу хакеру, который как-то заимел возможность делать SQL-инъекции в твою базу.
И до этого много раз об этом говорилось. Ну и что? Осознавать начинаем только тогда, когда реально взлом прошел. Многие просто недопонимают опасности. А она есть. С учетом того, что результат я получил уже в течение часа (а потом в течение пары часов еще несколько дыр), после того как задался вопросом «А смогу?», если кто-то сильно заморочится, то может не за час, но за несколько часов это может сделать. Если вы с MODX более двух лет знакомы, то должны помнить волну взломов MODX-сайтов, пока не выпустили обновленную версию с заплатками. Тогда сайты ломали просто в автоматическом режиме, ходили боты по интернету, находили Рево-сайты и ломали. Так вот, текущие уязвимости из этой же серии, под них можно написать ботов и полетят сайты массово. Конкретно от этой уязвимости спасет кастомный префик таблиц. Поэтому как минимум свои важные сайты обновите.
Николай, первое это конечно огромное большое спасибо за «защиту» наших сайтов!
Печально конечно, я до недавнего времени думал, что modx лучшая из лучших, считал гарантом и людям говорил зачем тебе битрикс за 20 тысяч в год если есть modx с большими возможностями и безопасностью. А оказывается дыр полно. Префикс старался менять на сайтах, но все же он не был супер сложным.
Парни из modx что-то ответили? или надо их сайт взломать, чтоб они поняли…
Печально конечно, я до недавнего времени думал, что modx лучшая из лучших, считал гарантом и людям говорил зачем тебе битрикс за 20 тысяч в год если есть modx с большими возможностями и безопасностью. А оказывается дыр полно. Префикс старался менять на сайтах, но все же он не был супер сложным.
Практически все эти проблемы решаются сменой префиксов таблиц и сокрытием папки коннекторов.Есть еще проблемы и как они решаются? т.е. я так понимаю их много и от этого становится еще печальней.
Парни из modx что-то ответили? или надо их сайт взломать, чтоб они поняли…
Не за что.
Про битрикс: если бы я его изучал 7 лет, как MODX, наверняка я там еще больше дыр нашел бы. В целом MODX довольно хорошо защищен, далеко не каждый взломает.
Про битрикс: если бы я его изучал 7 лет, как MODX, наверняка я там еще больше дыр нашел бы. В целом MODX довольно хорошо защищен, далеко не каждый взломает.
Есть еще проблемы и как они решаются?Я писал довольно много здесь про другие дыры, стоит перечитать комменты. Так или иначе, практически от всех этих уязвимостей спасает смена префиксов.
Парни из modx что-то ответили? или надо их сайт взломать, чтоб они поняли…Они взяли на заметку. В отличие от нас буржуи привыкли в выходные отдыхать. Наверняка завтра примут PR. Но этот ПР не решение проблемы в целом, префиксы менять все равно надо.
Понял))
Допустим если не идти легким путем, т.е. не менять префикс, а решать проблему в корне, я так понимаю в ядре копаться?
А ты им предложил в корне проблему решать(может даже решение дал) или они завтра напишут срочно все меняйте префиксы?))
Допустим если не идти легким путем, т.е. не менять префикс, а решать проблему в корне, я так понимаю в ядре копаться?
А ты им предложил в корне проблему решать(может даже решение дал) или они завтра напишут срочно все меняйте префиксы?))
Константин, не факт, что эту проблему можно решить на корню. Здесь слишком много аспектов. Смена префикса — это скорее всего и есть решение проблемы на корню. Да, многим не привычно и не удобно может быть, но при установке сменить префикс — это несколько символов вбить.
Префикс (не зря же его придумали), как и соль в паролях, создан для защиты от злоумышленников и не зря при установке есть возможность указать его.
Плохо то, что в modx можно сделать sql-инъекцию.
Плохо то, что в modx можно сделать sql-инъекцию.
Пока нашел, что в AdvSearch перестает работать поиск, если используется Query hook, в котором нужно прописывать prefix.
Речь об этом компоненте? Можете ссылку дать на конкретную строчку кода, где там используется префикс?
Речь идет не о самом снипете, а о хуке к нему для поиска в своих таблицах.
В последнемпосте пример такого хука. Без указания префикса он почему-то не работал.
К сожалению, сейчас компонент не поддерживается и найти актуальные доки невозможно. У goldsky доки не актуализировались и была ли вообще решена проблема не понятно.
Жаль, хороший компонент, очень…
В последнемпосте пример такого хука. Без указания префикса он почему-то не работал.
К сожалению, сейчас компонент не поддерживается и найти актуальные доки невозможно. У goldsky доки не актуализировались и была ли вообще решена проблема не понятно.
Жаль, хороший компонент, очень…
Речь идет не о самом снипете, а о хуке к нему для поиска в своих таблицах.Вопрос тогда больше к своим сниппетам, а не к компоненту.
А вот это:
$main = array(
'tablePrefix' => 'modx_', //The fix
правильней переписать на
$main = array(
'tablePrefix' => $modx->config['table_prefix'], //The fix
Во всяком случае в рамках парадигмы конкретно этого случая.
ого, спасибо!
Не за что!
Спасибо за находку, Николай!
Мой комент не в тему, но все же: если погуглить 'index of modx core' — можно найти тонну сайтов на MODX, с проиндексированным каталогами. Можно скачивать zip-компоненты, просматривать версию MODX через changelog.txt. Владельцы этих сайтов даже не подозревают о том, что уязвимы. Всему виной Apache и безответственность администрации хостинга.
Мой комент не в тему, но все же: если погуглить 'index of modx core' — можно найти тонну сайтов на MODX, с проиндексированным каталогами. Можно скачивать zip-компоненты, просматривать версию MODX через changelog.txt. Владельцы этих сайтов даже не подозревают о том, что уязвимы. Всему виной Apache и безответственность администрации хостинга.
Пожалуйста!
+1
+1
Кошмар какой!
Предлагаю написать про это отдельный топик, наверняка многие не в курсе. И да, на modhost.pro по умолчанию для всех сайтов прописано правило
Предлагаю написать про это отдельный топик, наверняка многие не в курсе. И да, на modhost.pro по умолчанию для всех сайтов прописано правило
location ~* ^/core/ {
deny all;
}
Василий, а вот бы еще, в свете недавнего шухера с безопасностью, составить список расширений на предмет глюков при изменении путей к папкам и т.п…
В топик же не получится вставить опросник типа reformal.ru? Или есть такая возможность?
(я к тому, что такой опросник могли бы обновлять все, а не только автор топика)
В топик же не получится вставить опросник типа reformal.ru? Или есть такая возможность?
(я к тому, что такой опросник могли бы обновлять все, а не только автор топика)
Все нормальные дополнения будут работать без проблем с любым префиксом и папками, ибо они получается из системных настроек и констант.
Проблемы могут быть только с собственными сниппетами, которые хардкодят префикс вот так
Проблемы могут быть только с собственными сниппетами, которые хардкодят префикс вот так
$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 модель для этой таблицы
Нет, нет, я ж не о префиксе, я об изменении путей, переименовании каталогов и т.п.
Просто хотелось бы список глючных (в этом случае) расширений все такие составить, ну, мало ли…
Просто хотелось бы список глючных (в этом случае) расширений все такие составить, ну, мало ли…
Никакой разницы. Все нормальные дополнения используют
MODX_CORE_PATH
MODX_ASSETS_URL
MODX_ASSETS_PATH
MODX_MANAGER_URL и т.д.
Хочется составлять и обновлять список — на здоровье. Каждый тратит своё время как хочет.
MODX_CORE_PATH
MODX_ASSETS_URL
MODX_ASSETS_PATH
MODX_MANAGER_URL и т.д.
Хочется составлять и обновлять список — на здоровье. Каждый тратит своё время как хочет.
Ok, внял совету :)
Абсолютно бесполезная вещь с заменой префикса, и нихрена его не долго брутить. Крутишь слепую скулю — проверяешь каждый символ по очередно и за 5 мин твой My_PrfX234_ подбереться. Тут просто cms гомно в плане безопасности
Зашел/Зарегился что бы обосрать MODX?)))
Ты можешь поспорить что не говно в плане безопасности?
Мы все с нетерпением через 5 минут ждём от тебя префикс этого сайта.
Ну после дефейса согласишься, мне впадлу чет тут кому-то доказывать…
Принимается. Уважительная причина. Хотя я ожидал что-то типа «Меня бабушка кушать зовёт. Как покушаю, сделаю уроки, посмотрю черепашек-ниндзя так сразу сразу».
молодец
xWdcKH6I4FYU_
Нет.
Это префикс тестового сайта, созданного вчера на modhost.pro
Это префикс тестового сайта, созданного вчера на modhost.pro
Но все-таки это префикс… сайта… на модх…
Печаль.
Печаль.
Ты тоже так можешь:
1. Заходишь на modhost.pro
2. Создаёшь новый тестовый сайт
3. Смотришь его префикс
4. Profit!
Что и кому это доказывает — непонятно. Речь, всё-таки, шла о префиксе этого сайта, а не любого подряд.
1. Заходишь на modhost.pro
2. Создаёшь новый тестовый сайт
3. Смотришь его префикс
4. Profit!
Что и кому это доказывает — непонятно. Речь, всё-таки, шла о префиксе этого сайта, а не любого подряд.
Это префикс тестового сайта, созданного вчера на modhost.proДык надо было написать кем именно созданного.
Если он сам создал и посмотрел, то это детский сад, а если он подобрал чужой префикс, то уже печаль.
Я не могу со 100% точностью заявлять, что человек, создавший сайт и написавший коммент — одно лицо, паспорт я не проверял.
Но если ты думаешь, что один человек вчера создал тестовый сайт, а другой следом его нашел, взломал и выложил сюда префикс — то советую включить ту часть мозга, которая отвечает у тебя за логику.
Я уж молчу о том, что «великий хакер» создал здесь новую учётную запись с тем же ником, а не разблокировал старую — что было бы гораздо круче и нагляднее.
В общем вас, хорьков-паникёров, уже не стесняясь троллят, а вы ведётесь.
Но если ты думаешь, что один человек вчера создал тестовый сайт, а другой следом его нашел, взломал и выложил сюда префикс — то советую включить ту часть мозга, которая отвечает у тебя за логику.
Я уж молчу о том, что «великий хакер» создал здесь новую учётную запись с тем же ником, а не разблокировал старую — что было бы гораздо круче и нагляднее.
В общем вас, хорьков-паникёров, уже не стесняясь троллят, а вы ведётесь.
Префикс был получен в результате слепого перебора уязвимого параметра. Следовательно, любой сайт юзающий такой компонент может быть похекан, сиди дальше и продавай дырявый софт
Бла-бла-бла.
Измени мой комментарий. :)) Или поменяй свой рейтинг. А то скучно, правда.
Измени мой комментарий. :)) Или поменяй свой рейтинг. А то скучно, правда.
Да я не собираюсь вредить. Но люди тут наотрез не хотят признавать проблемы в бе-сти
Ни кто не отказывается, просто одно дело проблемы, другое — профанация и троллинг.
Не вреди — доказывай. Или не ***зди. :))
Не вреди — доказывай. Или не ***зди. :))
Это сообщение было удалено
дешевый стеб, чё
тестовый сайт тебе ссылку повторить? )) дерзай
тестовый сайт тебе ссылку повторить? )) дерзай
эт голый modx, не палил его
Т.е. ты дыры в конкретных компонентах нарыл? Голый не вариант ломать?
Да, мб и в голом есть. не палил
На, тестовый сайт, s7328.h7.modhost.pro/, 24 часа.
не гони это префикс таблиц базы store сайтика modx.pro (store@localhost)
Неа, сайтики modstore.pro и modx.pro даже физически расположены на разных серверах.
Но спасибо за логи, я внимательно смотрю где и что ты перебирал, на какие файлы обращался и какими запросами.
Теперь очевидно, что нужно делать дополнительную фильтрацию всех запросов, перед передачей их в xPDO.
Но спасибо за логи, я внимательно смотрю где и что ты перебирал, на какие файлы обращался и какими запросами.
Теперь очевидно, что нужно делать дополнительную фильтрацию всех запросов, перед передачей их в xPDO.
Повезло что на разных серваках. Чтоб ты не отвертелся, админский хэш modxplus:zSWcQ6ZhNOao44BywPCtdiifV5xN5YC886fwF+H0v9s=: соль — e411f02aa6ex4f8f921d2944cd21a366. А там их несколько тысяч. Перебор не быстрый, но за ночь — вариант. Какого масштабы? А какое кол-во сайтов, использующих уязвимые скрипты…
Что там про изменения и большие префиксы писали? Думаю теперь понятно, что эта фигнюшка не шибко поможет..? А вот фильтровать входные параметры грамотно.
И да, те покемоны, кто дизы ставят, походу и приобретали данные модули. Ну терь ждите фиксов от дяди зенита.
Что там про изменения и большие префиксы писали? Думаю теперь понятно, что эта фигнюшка не шибко поможет..? А вот фильтровать входные параметры грамотно.
И да, те покемоны, кто дизы ставят, походу и приобретали данные модули. Ну терь ждите фиксов от дяди зенита.
Ну вобщем то в завершении темы, т.к. все просили префикс к modx.pro 8KGWv7PW4w3u_
Да, ты абсолютно прав — снимаю шляпу.
Я вчера весь день читал про слепые SQL и ставил эксперименты на тестовом сайте. А сегодня весь день буду обновлять свои дополнения на предмет фильтрации этих слепых SQL в запросах.
Очевидно, что на фильтрацию их в самом xPDO полагаться нельзя, как бы ни хотелось.
Я вчера весь день читал про слепые SQL и ставил эксперименты на тестовом сайте. А сегодня весь день буду обновлять свои дополнения на предмет фильтрации этих слепых SQL в запросах.
Очевидно, что на фильтрацию их в самом xPDO полагаться нельзя, как бы ни хотелось.
Что с нашим сообществом не так?
Зениту место в топ10, а ему влепили 95 минусов и забанили.
Пилим сук на котором сидим.
Зениту место в топ10, а ему влепили 95 минусов и забанили.
Пилим сук на котором сидим.
С нашим сообществом всё прекрасно.
Человек сначала ярко выступили и получил заслуженные минусы и бан. Затем вернулся и доказал свою правоту — теперь получит почёт и уважение.
Ну а я получил массу информации по методике взлома сайтов, благодаря логам на сервере.
Человек сначала ярко выступили и получил заслуженные минусы и бан. Затем вернулся и доказал свою правоту — теперь получит почёт и уважение.
Ну а я получил массу информации по методике взлома сайтов, благодаря логам на сервере.
А сегодня весь день буду обновлять свои дополнения на предмет фильтрации этих слепых SQL в запросах.Нам всем теперь нужно это сделать. Было бы неплохо написать про это инструкцию.
Я могу написать на что нужно обратить внимание и как исправить, но это же будет и инструкцией по взлому еще неисправленных сайтов и дополнений.
Так что, палка о двух концах. Свои дополнения я поправил, так что можно посмотреть коммиты у тех, что в открытом доступе — должно быть всё понятно.
Так что, палка о двух концах. Свои дополнения я поправил, так что можно посмотреть коммиты у тех, что в открытом доступе — должно быть всё понятно.
Думаю, так правильней.
Посмотрел Tickets (только он открыт). mSearch2 и Office обновил не глядя. Данный фикс немного меня успокоил. Я всегда так фильтрую данные в своих компонентах (на всякий ещё проверю все). Я про это даже статью год назад написал. Возможно Евгений её раскритикует, но для обсуждаемого случая она актуальна.
Но этот фикс решает половину проблемы. Что делать с коннектором (connector.php)? Евгений заходит через него. Запрос в ObjectGetProcessor с кривым id и милости просим. MODX это не фильтрует.
Т.е. надо переопределять метод initialize для всех get/update/delete процессоров и фильтровать в нём id.
П.С. По хорошему, MODX должен в процессоре смотреть мету ключа и фильтровать.
Посмотрел 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 должен в процессоре смотреть мету ключа и фильтровать.
По идее (по идее), в modConnectorResponse идёт проверка на авторизацию в админку и там вообще ничего снаружи не должно проходить.
Но я уже ни в чём не уверен.
Но я уже ни в чём не уверен.
Но я уже ни в чём не уверен.Я тоже. В этом плане знаний маловато. Просто исхожу из комментария Евгения
Это проблему не решает. Есть куча точек в хода из различных компонентов, которые оставляют коннекторы в /assets/components/Насколько я понимаю, именно для этого скрывается папка с коннекторами, а тут лежит в открытом доступе.
Очень хочется, чтобы Евгений успокоил насчет этого.
Я надеюсь, что речь именно про web-коннекторы.
Понятное дело, что через коннекторы менеджера тоже можно пролезть, но для этого требуется авторизация, а у web — далеко не всегда.
Ну, будем ждать еще взломов и смотреть логи, куда и как пролезли.
Понятное дело, что через коннекторы менеджера тоже можно пролезть, но для этого требуется авторизация, а у web — далеко не всегда.
Ну, будем ждать еще взломов и смотреть логи, куда и как пролезли.
Покопался в исходниках и написал пока такой фикс xPDO::getCriteria():
По моим тестам работает хорошо, желающие могут проверить на себе — это файл core/xpdo/xpdo.class.php. Предложил код автору xPDO, буду ждать ответа.
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, буду ждать ответа.
Предложил код автору xPDO, буду ждать ответа.Не забывай, сейчас выходные. Да ещё Рождество и Новый год скоро… Надеюсь, хотя бы в третьей версии MODX добавят. Осталось набраться терпения. :)
Ибо неведомы автору xPDO наши переживания, чего ему ноги ломать…
Да я, хотя-бы, обсудить хочу — есть ли в этом смысл.
Если есть, то могу и самостоятельно хотфикс в репозитории выложить, не взирая на праздники.
Если есть, то могу и самостоятельно хотфикс в репозитории выложить, не взирая на праздники.
Я себе добавил. Заодно и потестирую.
А пропатчить существующие сайты еще до принятия автором xPDO предложенного кода, не вариант?
а, вижу коммент modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70642
прадон, поспешил
а, вижу коммент modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70642
прадон, поспешил
Я свои уже пропатчил.
Другой вопрос, закрывает ли это сразу все дыры, или нужно еще методы какие править — потому и спрашиваю автора xPDO, он лучше знает.
Другой вопрос, закрывает ли это сразу все дыры, или нужно еще методы какие править — потому и спрашиваю автора xPDO, он лучше знает.
Василий, спасибо за фикс! У меня почему-то возникают проблемы с ним, когда пытаюсь в админке открыть страницу товара 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
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"
Страницы категории и обычные страницы в админке открываются нормально.
Это же просто эксперимент пока. Неизвестно где и как отразится ужесточение получения объектов.
Использовать на свой страх и риск, при получении ошибок — смотреть логи SQL и думать, как исправить.
У меня на тестовом сайте, например, всё в порядке с combo-options.
Использовать на свой страх и риск, при получении ошибок — смотреть логи SQL и думать, как исправить.
У меня на тестовом сайте, например, всё в порядке с combo-options.
По идее (по идее), в modConnectorResponse идёт проверка на авторизацию в админку и там вообще ничего снаружи не должно проходить.Поверь, происходит. И в тикетс ты коннектор не поправил. Через него сюда и можно добраться, а там и в другие процессоры. В часть из них и без авторизации.
Но я уже ни в чём не уверен.
Я считаю, что до тех пор, пока при запросе $modx->getObject('modResource') можно будет получить объект modUsers, тема будет не закрыта.
Но как, Шерлок? Особенно вот с этим исправлением?
Там же вроде идёт что-то типа
Там же вроде идёт что-то типа
$object = new $objectName($data);
или типа того. Хотяяя… можно же, наверное, подставить как-бы class_key = 'modUser' и тогда будет создан именно этот объект.
Типо того
Нужно было через POST работать;-) А вообще, давно известно, что Василий в отличии от Философа активно курит логи. Поэтому площадку для демонстрации нужно было выбирать не modx.pro;-)
Да там и POST завались, и подбор директорий через OWASP_DirBuster_Project, и еще много всякого в поисковых запросах (вроде всё отфильтровалось).
Я вовсе не уверен, что всё закрыл, но основное — наверняка.
Я вовсе не уверен, что всё закрыл, но основное — наверняка.
У Зенита явно было желание помочь.
Т.е. можно поочереди проверить каждый символ, а не перебирать каждый раз всю комбинацию целиком???
И мы так и не узнаем как…
PS Василий, такой праздник испортил, теперь опять придется на компоненты по 500 руб наскребать, а могли бы за час пароли ко всем банковским картам узнать((
И мы так и не узнаем как…
PS Василий, такой праздник испортил, теперь опять придется на компоненты по 500 руб наскребать, а могли бы за час пароли ко всем банковским картам узнать((
Смешного мало. То что взлом возможен он доказал изменив свой комментарий. Какие уж тут шутки.
Это я пошутил.
Подбил на взлёте яркую звезду, которая ушла в рейтинг -10 за 5 комментов.
Подбил на взлёте яркую звезду, которая ушла в рейтинг -10 за 5 комментов.
уффффффф, придется снимать стресс теперь))))))
Вы реально поверили, что он комментарий поправил?))))
Первое что он должен был сделать тогда — это рейтинг себе накрутить — + 1000 в карму. И продолжать долго постить после бана.
А так очевидно было, что это Василий))
Первое что он должен был сделать тогда — это рейтинг себе накрутить — + 1000 в карму. И продолжать долго постить после бана.
А так очевидно было, что это Василий))
Оно, конечно, логично)) Сейчас)) А в момент приступа страха все было иначе))))
Вы реально поверили, что он комментарий поправил?))))— да)))
Я хотел вам тут еще много крутого рассказать, но пришёл злой Василий и меня забанил, увы…
Tell me, bro…
Я тоже бы хотел узнать. Вдруг чего-то новое))
В 5 минут не уложился, но комментарий, вижу, изменил. Мда, печально всё с MODX.
честно, аж дурно стало) жуть и печаль
Да это я отредактировал, смеха ради.
Неужели ты думаешь, что забаненый человек с возможностью что-то редактировать обошёлся бы без матов и сам себя не разблокировал?
Неужели ты думаешь, что забаненый человек с возможностью что-то редактировать обошёлся бы без матов и сам себя не разблокировал?
Ну и шуточки у тебя. Чуть инфаркта Микарда не получил.
Если бы ты не сказал, то я так бы до инфаркта и дожил бы… уже сегодня))))))
Я думал, это очевидно, что комментарий от зачёркнутого никнейма изменить мог только «злой Василий».
Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?
Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?
Ну, как бы паранойя реальность искажает, страх он такой, может голову совсем снести))
Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?— нет, в другую дыру, известную злоумышленнику
Не боись.
При первых же признаках взлома я побегу к Евгению Борисову и он тут всё обезопасит. Возможно, даже со скидкой, по старой дружбе =)
При первых же признаках взлома я побегу к Евгению Борисову и он тут всё обезопасит. Возможно, даже со скидкой, по старой дружбе =)
Аллилуйя! (это не сарказм)
Или вы реально поверили в бред про подбор многосимвольного префикса в разных регистрах вслепую?Судя по всему, многие поверили. У страха глаза велики.
Значит 70-100 в десятой степени у них выполняется за 300 секунд, а сайты с 1000 документов за 30 секунд не всегда выполняются. Магия какая…
70-100 в десятой степени— нет же, просто скорее веришь в другие, неизвестные дыры, которые мерещатся от любого чиха.
У страха глаза велики.огого!!! именно, да)))
Господи, как же ты смешон. Последний раз я подобный бред нес лет в 14, когда в автобусе пытался объяснить однокласснику почему пользоватлей *win взламывают чаще, чем *nix. Не поверишь, до сих пор эту историю вспоминаю со стыдом. Моя позици была жестка и не поколибима — прям как у тебя сейчас.
*win — там окошечки. И окошечки можно мышкой перетаскивать. Поэтому нужно контролировать каждый пиксель
*nix — все в терминале. Он текстовый. Поэтому контролировать мы должны только все печатные символы.
Вывод: печатных символов меньше чем пикселей на экране. Поэтому *nix взломать проще.
Для чего я эту историю рассказал? Да для того, чтобы ты все-таки понял, как смешон в попытках доказать свою правоту аргументами, который вообще не имеют отношения к реальному положению вещей.
*win — там окошечки. И окошечки можно мышкой перетаскивать. Поэтому нужно контролировать каждый пиксель
*nix — все в терминале. Он текстовый. Поэтому контролировать мы должны только все печатные символы.
Вывод: печатных символов меньше чем пикселей на экране. Поэтому *nix взломать проще.
Для чего я эту историю рассказал? Да для того, чтобы ты все-таки понял, как смешон в попытках доказать свою правоту аргументами, который вообще не имеют отношения к реальному положению вещей.
Женя, что-то ты какую-то фигню сейчас сказал. Давай просто? Ты считаешь, что нет разницы между простыми и сложными паролями? Что же народ не пользуется одними только паролями типа 123456 и qwerty? Не потому ли, что их проще подобрать? И ты хочешь сказать, что подобрать префикс типа modx2_ и sdfWE234s_wefSDf_ — одна и та же задача? И время займет это одно и то же?
Ты путаешь божий дар с яичницей. Полный перебор пароля для некоего хеша и полный посимвольный перебор строки.
$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 секунд? А если запросы еще слать параллельно, а не последовательно?
$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 секунд? А если запросы еще слать параллельно, а не последовательно?
Женя, у тебя тут совсем плохо с математикой.
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 запросом…
Перебор хеша пароля из 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 запросом…
Он же говорит про слепую инъекцию, т.е. для перебора первого символа из префикса нужно сделать максимум 63 запроса. Раз длина префикса 17 символов, то общее максимальное число запросов для подбора этого префикса: 17х63, что как раз 1071 запрос в общем итоге.
Начинает подбешивать твоя упертость в своей правоте. Кури скрипт с двумя различными техниками брута строки fD3_
Результат работы ошеломляет
Результат работы ошеломляет
Full string: fD3_ => 1622943
By char: fD3_ => 155
И прекрати уже наконец людей вводить в заблуждения. Попахивает моветоном
Ладно, поверю тебе на слово, что так возможно подобрать. Но все равно, это уже труднее (хотя бы потому что я не смог этим воспользоваться, наверяка это и другим добавит сложностей).
Невозможно перейти на по этой ссылке. Видимо Василий зафильтровал всё нафиг. :)
.
С каждым заходом в эту тему, так становится печальнее… Где-то писали про любовь к модх — она постепенно угасает (скоро будет: «прошла любовь, завяли помидоры»).
Дабы этого не произошло со всеми и со мной надо найти какое-то решение, потому что здесь оставляем комментарии и дыр выявляется много, а там в кабинетах модх скорее всего ничего не меняется. Где-то месяц назад или более Василий выкладывал новость о создание команды на будущее развитие модх (вроде так было, поправьте если путаю), так вот я предлагаю собрать похожую «команду»,«совет»,«консорциум», просто группа, которая напишет большой БагРепорт и будет в будущем писать о дырах модх, а также если есть решение.
Например: Василий, Николай и Евгений Борисов, они ребята «авторитетные» и о них в модх знают, проще говоря к ним прислушаются. Написали в модх, что вот там то дыра, поправить можно так-то, в модх увидят, что письмо от этой команды и рассмотрят его и отнесутся с серьезностью, а не просто забьют. Так сказать нужно подсказывать разработчикам («подпинывать») модх, но тем самым сделать очень большое дело!!!
Глядишь и команда Simple Dream тоже подключится или кто то другой. Даже, хотя бы исходя из финансовой точки зрения, из-за дыр не будет пользователей модх и никто не будет покупать в магазине дополнения и много разных вытекающих последствий…
Ведь это любовь к модх, а за любовь надо бороться.
Дабы этого не произошло со всеми и со мной надо найти какое-то решение, потому что здесь оставляем комментарии и дыр выявляется много, а там в кабинетах модх скорее всего ничего не меняется. Где-то месяц назад или более Василий выкладывал новость о создание команды на будущее развитие модх (вроде так было, поправьте если путаю), так вот я предлагаю собрать похожую «команду»,«совет»,«консорциум», просто группа, которая напишет большой БагРепорт и будет в будущем писать о дырах модх, а также если есть решение.
Например: Василий, Николай и Евгений Борисов, они ребята «авторитетные» и о них в модх знают, проще говоря к ним прислушаются. Написали в модх, что вот там то дыра, поправить можно так-то, в модх увидят, что письмо от этой команды и рассмотрят его и отнесутся с серьезностью, а не просто забьют. Так сказать нужно подсказывать разработчикам («подпинывать») модх, но тем самым сделать очень большое дело!!!
Глядишь и команда Simple Dream тоже подключится или кто то другой. Даже, хотя бы исходя из финансовой точки зрения, из-за дыр не будет пользователей модх и никто не будет покупать в магазине дополнения и много разных вытекающих последствий…
Ведь это любовь к модх, а за любовь надо бороться.
Так Евгений Борисов это и делал (судя по комментам выше), но увы, руководству было всё равно.
Ну вот я поэтому имел ввиду не один человек, а группу экспертов модх.
Боюсь, что пока кто-то не начнет взламывать сайты авторов MODX, они не начнут относиться серьезно к безопасности движка.
Да были же уже взломы. И чхали они на них. Сейчас вот modxcloud раздает информацию о первых 9 пользователях удовлетворящих запросу. Всего 21168 пользователь. И это только с криво сформированным запросом (никакой SQL-injection и попыток взлома — просто кривой запрос). И это только на этапе регистрации… А что там еще в ЛК твориться — страшно представить.
А это у Login или у другого компонента кривой контроллер?
Получается что все дополнения рассчитывали на безопасность XPDO на нижнем уровне (жесткую проверку на авторизацию, строгая типизация какая-нибудь), а как оказалось её там нет, так?
Или это все та же песня о том, что разработчики (дополнений) сами не фильтруют входные данные и открывают дыры XSS/SQL?
Получается что все дополнения рассчитывали на безопасность XPDO на нижнем уровне (жесткую проверку на авторизацию, строгая типизация какая-нибудь), а как оказалось её там нет, так?
Или это все та же песня о том, что разработчики (дополнений) сами не фильтруют входные данные и открывают дыры XSS/SQL?
Или это все та же песня о том, что разработчики (дополнений) сами не фильтруют входные данные и открывают дыры 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 мне только все усложняет заставляя делать еще какую-то не нужную работу.
Жень, скажи честно — вот на modx.pro сейчас есть теоретическая возможность взлома через подобные лазейки?
Если есть, напиши мне, пожалуйста, стоимость работ по полному анализу и исправлению на мыло.
P.S. Дебилизм — не дебилизм, но вроде через Tickets пока не было массовых взломов.
Если есть, напиши мне, пожалуйста, стоимость работ по полному анализу и исправлению на мыло.
P.S. Дебилизм — не дебилизм, но вроде через Tickets пока не было массовых взломов.
Жень, скажи честно — вот на modx.pro сейчас есть теоретическая возможность взлома через подобные лазейки?Теоретически — да.
Если есть, напиши мне, пожалуйста, стоимость работ по полному анализу и исправлению на мыло.Ниже ответил как я работаю.
Понял, спасибо.
Значит буду проверять свои дополнения самостоятельно.
Значит буду проверять свои дополнения самостоятельно.
P.S. Дебилизм — не дебилизм, но вроде через Tickets пока не было массовых взломов.Я же тебе выше писал, что через тикетс запросто в системные процессоры залез.
Тут речь про фильтрацию тегов на фронтенде.
Да там скорее всего много чего найдется. Я вообще квадратные скобки на спецсимволы менял и все. &91;
п… — другого слова нет. О какой такой нашей безопасности может идти речь если они себя не состоянии обезопасить.
Ага, не говори, у нас у всех потенциально на проектах есть огроменная дыра, которая сидит и ждет мозговитого спеца, который захочет извлечь какие-нибудь данные или нанести ущерб.
wordpress весь в дырах, это не мешает им быть самой популярной CMSкой. Вы попробуйте сначала воспользоваться этими дырами.
Лично я не вижу вообще оснований все бросать и переходить на другую систему. Зачем? Чтобы там кто-то знающий пришел и рассказал, что есть дыры? Пойдете на другую платформу? Есть не мало статей написанных как обезопасить MODX. Переведите админку и коннекторы на другой поддомен, закройте его по ip и двухфакторной авторизацией. На фронте дайте одну только точку входа и фильтруйте входящие запросы. Все. Что вам еще надо? Это на серьезных проектах. Простые сайты-визитки делаете? Кому вы нужны? — поменяйте префикс и все.
Это будет касаться практически любого проекта. Я не думаю, что Женя через какое-то время обнаружит дыры и в ларавеле (если еще не нашел).
Лично я не вижу вообще оснований все бросать и переходить на другую систему. Зачем? Чтобы там кто-то знающий пришел и рассказал, что есть дыры? Пойдете на другую платформу? Есть не мало статей написанных как обезопасить MODX. Переведите админку и коннекторы на другой поддомен, закройте его по ip и двухфакторной авторизацией. На фронте дайте одну только точку входа и фильтруйте входящие запросы. Все. Что вам еще надо? Это на серьезных проектах. Простые сайты-визитки делаете? Кому вы нужны? — поменяйте префикс и все.
Это будет касаться практически любого проекта. Я не думаю, что Женя через какое-то время обнаружит дыры и в ларавеле (если еще не нашел).
поменяйте префикс и все.modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70142
Я не нашел возможности этим воспользоваться. То есть если бы была возможность увидеть данную информацию, то конечно же было бы проще. Загнать в переменную название полученной таблицы то же можно, но нельзя выполнить запрос типа select * from @table;
Может отправить на security@modx.com полный список всех клиентов и их данные и сказать «Ай, ай, ай ребята», прикрепить ссылку на эту новость, пускай учат русский и читают комменты, м?
Сказать, что выложим в публичный доступ все email + имена. Это как-никак конфиденциальная информация и мало кто этому обрадуется. Получится своеобразный пинок под зад, надеюсь они выйдут на контакт и приложат усилия к фиксу.
Сказать, что выложим в публичный доступ все email + имена. Это как-никак конфиденциальная информация и мало кто этому обрадуется. Получится своеобразный пинок под зад, надеюсь они выйдут на контакт и приложат усилия к фиксу.
Мне это не интересно.
А еще можно сделать рассылку всем клиентам их клауда, что все их сайты и данные уязвимы, и подкрепить их данными, и что пора переезжать. Думаю, когда клиенты начнут разбегаться, они зачешутся. Раз простыми словами разрабы принебрегают, то нужно уже действовать. Я бы так и сделал, т.к. У меня много сайтов на этой системе, и у моих клиентов. Если их взломают, то геморрой прилетит на мою голову. Но знаий у меня недостаточно. А Евгению Борисову вряд ли интересно этим заниматься.
А Евгению Борисову вряд ли интересно этим заниматься.Аудит Evo проектов провожу. А Revo — нет. Дело в том, что если находится дырка в компоненте, то исправить я ее не могу, т.к. нужно либо связываться с разработчиком, чтобы он выпустил патч (а этот патч лишает меня последующей работы). Либо форкать компонент и собирать свою версию (а это лишает владельца сайта возможности обновляться и получать новый функционал).
Поэтому в Revo я проверяю только самопис. А его в большинстве случаев ооочень мало. Поэтому чтобы из-за копеек не брать на себя ответственность я стараюсь обходить аудит revo стороной. Боле того, есть псевдозаказчики, которые хотят получить в отчете по аудиту все. Начиная от способов устранения, до способов взлома. В конечном счете начинают сами своим клиентам предлагать доп.услугу — аудит безопасности сайтов modx revo.
Поэтому мониторю и исправляю уязвимости только на тех проектах, которые находятся у меня в полной поддержке. Т.е. не разово платят за аудит, а ежемесячно, чтобы я мониторил состояние. Фиксил баги и оперативно удалял вирусы если вдруг они залезли, например, через ФТП. А эту услугу заказывают уже конечные клиенты, а не посредники. И то, только те, которые понимают что заказывают.
В общем если есть вопросы — обращайтесь через почту на modx@agel-nash.ru
Сейчас вот modxcloud раздает информацию о первых 9 пользователях удовлетворящих запросу. Всего 21168 пользователь.Жесть…
А киньте, пожалуйста, ссылочку на правильную настройку бекапов. Желательно с заброской на облако куда-нибудь.
Понял, что если нельзя проблему решить, нужно ее предвосхищать.
Понял, что если нельзя проблему решить, нужно ее предвосхищать.
Огромное вам спасибо!
Еще сам себе отвечу, но мне кажется, что один из важных аспектов — это вообще скрытие cms сайта.
Постараюсь объяснить.
В меру моего понимания есть два направления взлома — целенаправленно (из неприязни, злой конкуренции) и массово (обычный робот обходит сайты и ищет заранее известные дыры).
От первого направления защититься сложнее всего и тут нужно обращаться к спецам типа Евгения. А второй, как мне кажется, должен чаще встречаться, но защититься от него проще.
И основная защита от массовых взломов — это скрыть характерные признаки CMS, чтобы различными сервисами и простыми методами невозможно было определить, что у вас Modx.
Вот что я нашел для себя работающим:
1) Перенести админку из manager в другую папку. Делается легко, для меня только оказалась проблема с обновлением, т.к. каждый раз приходится переименовывать соответствующую папку в пакете обновления modx, но что делать…
2) Ни в коем случае не указывать путь к админке в robots.txt. Ну т.е. запись Disallow: /newmanager/ — это очень удачная подсказка, где теперь ваша новая админка. Пробежав по всем путям Disallow из этого файла можно выудить где ввод пароля и все.
Не переживайте, робот поисковых систем даже если и найдет ваш новый путь не будет выкладывать его в поиск т.к. там нечего выкладывать.
Я не гуру и могу ошибаться, поэтому давайте вместе поищем какие-то правила где и что закрывать.
Постараюсь объяснить.
В меру моего понимания есть два направления взлома — целенаправленно (из неприязни, злой конкуренции) и массово (обычный робот обходит сайты и ищет заранее известные дыры).
От первого направления защититься сложнее всего и тут нужно обращаться к спецам типа Евгения. А второй, как мне кажется, должен чаще встречаться, но защититься от него проще.
И основная защита от массовых взломов — это скрыть характерные признаки CMS, чтобы различными сервисами и простыми методами невозможно было определить, что у вас Modx.
Вот что я нашел для себя работающим:
1) Перенести админку из manager в другую папку. Делается легко, для меня только оказалась проблема с обновлением, т.к. каждый раз приходится переименовывать соответствующую папку в пакете обновления modx, но что делать…
2) Ни в коем случае не указывать путь к админке в robots.txt. Ну т.е. запись Disallow: /newmanager/ — это очень удачная подсказка, где теперь ваша новая админка. Пробежав по всем путям Disallow из этого файла можно выудить где ввод пароля и все.
Не переживайте, робот поисковых систем даже если и найдет ваш новый путь не будет выкладывать его в поиск т.к. там нечего выкладывать.
Я не гуру и могу ошибаться, поэтому давайте вместе поищем какие-то правила где и что закрывать.
Чтобы не переименовывать админку каждый раз после обновления, скачивайте advanced версию и указывайте «Расширенное обновление»
config.inc.php нужно скрывать, в новых версиях отключать заголовок X Powered By.
Но, это все не спасет, если бот будет проверять наличие какого-нибудь дополнения.
pdoTools почти на каждом сайте же, а 200 ответ от сервера по данному URL modx.pro/assets/components/pdotools/js/pdopage.js на 99,9% идентифицирует о том, что это MODX.
Можно переименовывать папку /assets/ от ботов может быть спасет, но не более.
А так дыры есть везде, одно дело если они в компонентах, другое дело, когда в системе.
Но, это все не спасет, если бот будет проверять наличие какого-нибудь дополнения.
pdoTools почти на каждом сайте же, а 200 ответ от сервера по данному URL modx.pro/assets/components/pdotools/js/pdopage.js на 99,9% идентифицирует о том, что это MODX.
Можно переименовывать папку /assets/ от ботов может быть спасет, но не более.
А так дыры есть везде, одно дело если они в компонентах, другое дело, когда в системе.
Эпилог то какой?
Василий написал, что «префикс таблиц теперь приравнивается к паролю супер-админа»,
а Евгений после забаненного Зенита написал, что префикс посимвольно брутится за несколько секунд.
В итоге получается, что пароль супер-админа подбирается за несколько секунд.
Разработчики Модха ничего не делают,
Василий хочет, но не может,
Евгений может, но не хочет.
Что делать, господа?
Ждать пока Василий и Евгений совместно форкают Модх и делают другую ветку — Модх ЕВа?
Василий написал, что «префикс таблиц теперь приравнивается к паролю супер-админа»,
а Евгений после забаненного Зенита написал, что префикс посимвольно брутится за несколько секунд.
В итоге получается, что пароль супер-админа подбирается за несколько секунд.
Разработчики Модха ничего не делают,
Василий хочет, но не может,
Евгений может, но не хочет.
Что делать, господа?
Ждать пока Василий и Евгений совместно форкают Модх и делают другую ветку — Модх ЕВа?
вроде как сейчас безопаснее использовать laravel на сколько я понял. Хотя ведь всяко бывает, возможно в обозримом будущем можно будет вновь говорить о безопасности MODX
На самом деле Laravel — не панацея. Во время разработки вы сами можете открыть дыру — хоть на Laravel, хоть на MODX, хоть на самописной системе
Да, но там закрывают дыры, а у нас по словам Евгения — просто меняют вектор атаки.
согласен. Тогда немного изменим направление вектора в сторону серверной обвязки. К примеру
suhosin, naxsi, ModSecurity. Как считаешь, с помощью этих пакетов можно хоть как-то обезопасить MODX сайт на сервере от внешних атак?
suhosin, naxsi, ModSecurity. Как считаешь, с помощью этих пакетов можно хоть как-то обезопасить MODX сайт на сервере от внешних атак?
Евгений и Николай знают как взломать, но пока никому не рассказали.
Хотя тот кто разбирается уже мог увидеть эту ветку и дальше вопрос насколько легко написать программку для массового взлома.
Если легко, то сразу после взлома выйдут и заплатки, все же разработчики MODx, даже если считать и ленивыми, очень талантливые программисты и выход найдут. Если сложно, то задабривайте врагов, чтобы они не пришли ломать лично ваш сайт))
Хотя тот кто разбирается уже мог увидеть эту ветку и дальше вопрос насколько легко написать программку для массового взлома.
Если легко, то сразу после взлома выйдут и заплатки, все же разработчики MODx, даже если считать и ленивыми, очень талантливые программисты и выход найдут. Если сложно, то задабривайте врагов, чтобы они не пришли ломать лично ваш сайт))
)))
кто бы ты ни был, мой враг, пожалуйста, не взламывай мой сайт. так подойдет?
кто бы ты ни был, мой враг, пожалуйста, не взламывай мой сайт. так подойдет?
не, это вы для массового взлома написали
а для персонального задабривать надо Евгения и Николая, чтобы они к вам не пришли))
а для персонального задабривать надо Евгения и Николая, чтобы они к вам не пришли))
получается Евгений и Николай — враги? о_0
получается Евгений и Николай — враги? о_0Ну, вообще мне тут много кто в карму нагадил)))
Но для меня это не повод.
странно, я наоборот голосую за то, чтобы вся глубина проблем выливалась наружу на обозрение общественности. это двигатель прогресса))) заставляет двигаться ответственных лиц
кто знает, может это вы из под зенита писали? ))
а так, лучше как минимум их не злить))
а так, лучше как минимум их не злить))
Ладно если бы ждать надо было подобного: — «Через пару дней будут фиксы».
Тут у многих целый парк MODX-сайтов. Часть народу, таких как я, мало что понимают в движках. И от осознавания беспомощности руки падают. Ты знаешь о дырах, но сделать ничего не можешь
На одном из сайтов поставил Advanced + советы от Философа, но я даже не знаю…
Тут у многих целый парк MODX-сайтов. Часть народу, таких как я, мало что понимают в движках. И от осознавания беспомощности руки падают. Ты знаешь о дырах, но сделать ничего не можешь
На одном из сайтов поставил Advanced + советы от Философа, но я даже не знаю…
Мне клиент передал вордпресс-сайт на поддержку, просто вместе с остальными сайтами. Через пару недель весь сайт как вшивая собака, благо в «клетке» был. Но вордпресс по прежнему №1 по популярности в мире.
У вордпресса есть проблема с плагинами, такая же проблема есть и в MODX.
Просто рынок модикса ничтожно мал по сравнению с гигантом WP. По этому под MODX еще не пишут ботов всяких итд итп, которые бы проверяли сайт на дыры и грузили бы шеллы, а вот по WP это все есть и прекрасно работает.
Просто рынок модикса ничтожно мал по сравнению с гигантом WP. По этому под MODX еще не пишут ботов всяких итд итп, которые бы проверяли сайт на дыры и грузили бы шеллы, а вот по WP это все есть и прекрасно работает.
По этому под MODX еще не пишут ботов всяких и тд и тпТак и есть. Задумываюсь написать… Точнее написать сервис для автоматической проверки MODX-сайтов на уязвимости…
Как и говорилось выше в комментариях ребятами, скрыть, что это MODX — уже замечательно. Вот займемся написанием проверок.
А можно еще и добавить пару признаков WordPress'а. Пусть пытаются взломать несуществующий движок…
Да, да, я так уже)))
Посмотрел, а wp-admin — сверх частый запрос от ботов, ну так нате, вот вам админка от вордпреса, велкам)) Плагинов еще напихать? Статичные файлы, лишь бы пути были как у каких-то популярных WP плагинов? ))
Маскируемся!
Посмотрел, а wp-admin — сверх частый запрос от ботов, ну так нате, вот вам админка от вордпреса, велкам)) Плагинов еще напихать? Статичные файлы, лишь бы пути были как у каких-то популярных WP плагинов? ))
Маскируемся!
На сайт 1 свой сайт где HTML-странички добавлял админку от WordPress'а. Чисто издевки ради
Тогда ждем от вас компонент по смене префиксов и превращению (маскировке) Модха в Вордпресс.
По-моему видел я даже пакет специальный, который админки других сайтов имитирует… Боюсь конечно напутать и наврать. Но у меня как бы лычка ShopModxBox в футере, так что было немного нелепо данный пакет устанавливать. Или там попытки зайти на страницы админок фиксируются… Не помню точно… Ну, у меня опять же плагин wappalyzer в браузере, сам себя ловить буду. Да и пути к js глобально менять ленился.
Я вас может быть немного разочарую. Но
— при массовых взломах насколько мне известно запросы идут сразу на уязвимый сценарий. — Попытки найти админку бывают из любопытства.
— Определение CMS по сигнатурам это только если сайт действительно интересен. Коли это так, то спрятать все сигнатуры довольно сложно. Особенно если сайт чекается руками, а не через 2ip
Так что небольшой профит в получите. Возможно даже узнаете об уязвимостях в других CMS таким способом. Но полагаться на подобную защиту нет смысла.
— при массовых взломах насколько мне известно запросы идут сразу на уязвимый сценарий. — Попытки найти админку бывают из любопытства.
— Определение CMS по сигнатурам это только если сайт действительно интересен. Коли это так, то спрятать все сигнатуры довольно сложно. Особенно если сайт чекается руками, а не через 2ip
Так что небольшой профит в получите. Возможно даже узнаете об уязвимостях в других CMS таким способом. Но полагаться на подобную защиту нет смысла.
ну выходит, что нет полностью безопасных систем? Может быть только если чистые, не обремененные разнообразными плагинами, самописами и т. д. Получается, что для талантливых специалистов в области взлома вообще нету закрытых дверей, не считая закрытые системы, открытые только пользователям с определенным IP?
НЕТ АБСОЛЮТНОЙ ЗАЩИТЫ, ЕСТЬ ПЛОХИЕ ХАКЕРЫ!
Эта истина всегда меня успокаивала. Поэтому менять самую лучшую систему (хоть и несовершенную как и всё остальное) я не собираюсь.
Эта истина всегда меня успокаивала. Поэтому менять самую лучшую систему (хоть и несовершенную как и всё остальное) я не собираюсь.
ну выходит, что нет полностью безопасных систем?Да.
Может быть только если чистыеИ чистые бывают дырявыми.
Получается, что для талантливых специалистов в области взлома вообще нету закрытых дверейДа.
не считая закрытые системы, открытые только пользователям с определенным IP?Ну там тоже можно IP подменить или проверку обойти…
Все от случая к случаю.
Классная идея про сервис! Ещё, мне кажется, будет полезен стендэлон компонент поиска и устранения уязвимостей и защиты от атак по аналогии с RSFirewall! и Admin Tools из мира Джумла. RSFirewall пользуюсь постоянно на своем старинном сайте — спасает.
Ну а обновление закрывающее брешь MODXеры выпускать собираются? Ни чего не слышно?
Пока молчат.
Не в тему немножко:
Хорошо бы чтобы при нажатии на этот правый значок обновления комментариев, происходил скроллинг до первого нового комментария, а не просто показ количества новых комментариев…
А то захожу в эту тему уже который раз, тут уже 239 комментов и приходится снова скроллить всю эту простыню в поиске малозаметных на моём экране желтоватых комментариев…
Я вначале почему-то думал, что эта кнопочка обновления так и работает…
Либо снизу поставить ещё один значок стрелочки, который бы скроллил по новым комментариям если они есть, а то текущий значок сразу и сбрасывает их…
Но это так, мысли вслух, просто накипело — уже наверное раз 50 заглядывал в эту тему и возможно это не последний раз… ))
Хорошо бы чтобы при нажатии на этот правый значок обновления комментариев, происходил скроллинг до первого нового комментария, а не просто показ количества новых комментариев…
А то захожу в эту тему уже который раз, тут уже 239 комментов и приходится снова скроллить всю эту простыню в поиске малозаметных на моём экране желтоватых комментариев…
Я вначале почему-то думал, что эта кнопочка обновления так и работает…
Либо снизу поставить ещё один значок стрелочки, который бы скроллил по новым комментариям если они есть, а то текущий значок сразу и сбрасывает их…
Но это так, мысли вслух, просто накипело — уже наверное раз 50 заглядывал в эту тему и возможно это не последний раз… ))
Либо нажимать на количество комментариев под кнопкой обновления.
О, не знал, спасибо, иду проверять…
А то в соседней распухшей теме про стоимость компонентов у меня такая же история была.
Спасибо за неочевидный для меня лайфхак!
P.S. Проверил — это действительно круто, то что напрашивалось я даже не догадался что уже реализовано, facepalm.jpg, извини за зря поднятые волны, но может есть и другие как я ))))
А то в соседней распухшей теме про стоимость компонентов у меня такая же история была.
Спасибо за неочевидный для меня лайфхак!
P.S. Проверил — это действительно круто, то что напрашивалось я даже не догадался что уже реализовано, facepalm.jpg, извини за зря поднятые волны, но может есть и другие как я ))))
Поверь, мы есть :)
Может быть немного наивное предположение, но все же озвучу.
Как я понял взлом осуществляется через коннекторы, А если через htaccess отправлять запросы переданные на любой connector.php на свой скрипт, в нем фильтровать весь возможный sql и вызывать уже оригинальный connector.php с очищенными параметрами. Или такой подход не подойдет?
Как я понял взлом осуществляется через коннекторы, А если через htaccess отправлять запросы переданные на любой connector.php на свой скрипт, в нем фильтровать весь возможный sql и вызывать уже оригинальный connector.php с очищенными параметрами. Или такой подход не подойдет?
А эта пробелма относится к версии modx 2.5.1? Там в описании изменений тоже какие-то дырки от инъекций закрыли. Только я не прочел какие.
Эта версия как бы давно выпущена, все ею давно уже пользуются
Я не обновлял с 2.5.0 Поэтому решил уточнить. Спасибо
modx.com/get-modx/security
Действительно очень прискорбно, что у разработчиков MODX есть время на обновление собственного сайта, переработку его практически с нуля, сбору статистики о беспрецедентной безопасности, но нет времени бросить всё (на сколько известно, так как новостей что идет работа какая-то в этом направлении нет никаких) и как ужаленные в жопу закрывать все дыры. А они вообще в курсе всей этой волны, или они знают только о её начале?
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 есть время на обновление собственного сайта, переработку его практически с нуля, сбору статистики о беспрецедентной безопасности, но нет времени бросить всё (на сколько известно, так как новостей что идет работа какая-то в этом направлении нет никаких) и как ужаленные в жопу закрывать все дыры. А они вообще в курсе всей этой волны, или они знают только о её начале?
а то они там должны написать? все пропало?)))
не знаю) Просто MODX он же себя позиционирует как безопасная система — а это состояние нужно регулярно совершенствовать. А следовательно — я не могу понять их реакцию на последние новости. Тем более нынешняя проблема вероятнее всего существует столько, сколько существует MODX.
Думаю, просто трудности перевода. Они не до конца понимают проблемы. Написал сейчас дополнительно Райну в личку, сейчас должны зашевелиться.
Англоязычное сообщество с задержкой получает инфу о проблеме и паника так не накрыла видимо, как русскоязычное. Постепенно докатится в любом случае.
Ну, я в слэке вообще ничего из этой темы не увидел, а там и Райн, и Джейсон, и Марк, все есть. Просто сложности в коммуникациях.
Будут шустрее когда панику простые пользователи поднимут, англоязычные.
а пока так:
а пока так:
Definitely a problem of communication! I managed to confirm one issue you emailed about last week, but did not realise there were other issues that made everything worse. Sorry it took so long to get our full attention.
I'm told and showed to Ryan. And in a letter he cited an example.
With all respect to Ryan, he's not a developer and not the person to talk to for security issues. That's why there is security@modx.com, as that has the integrators and other MODX team members.
We took too long to respond to your initial email, and I'm sorry for that. Maybe we need to set up new policies on who handles reports in what way to make sure that doesn't happen, but talking to Ryan is not the same as alerting core developers about critical issues.
We took too long to respond to your initial email, and I'm sorry for that. Maybe we need to set up new policies on who handles reports in what way to make sure that doesn't happen, but talking to Ryan is not the same as alerting core developers about critical issues.
Maybe))
Надо, чтоб человек хорошо знающий английский описал им, что случилась и о чем разговор на этой странице.
I've managed to read the entire thread using Google Translate, but I have not found details on the actual vulnerabilities and proof of concepts. There's a lot of discussion and some pointers to code, but that's not enough for us to reproduce the problems and solve them.
It's good that steps to hack a site are not posted publicly, but we do need that information via security@modx.com so we can fix it as soon as possible. If it's in Russian we can use google translate, as long as we get the information we need to solve it.
It's good that steps to hack a site are not posted publicly, but we do need that information via security@modx.com so we can fix it as soon as possible. If it's in Russian we can use google translate, as long as we get the information we need to solve it.
Снаряжаем глубокоуважаемого Зенита в заграничную экспедицию по ломанию modx.com c целью обращения внимания разработчиков? Раз по другому их не расшевелить…
Если не получится modx.com, то хотя бы повесить ссылку на эту ветку на этих образцовых сайтах:
www.modmore.com/simplecart/
Или эти дыры только у нас? У них все фильтруется?
Если не получится modx.com, то хотя бы повесить ссылку на эту ветку на этих образцовых сайтах:
www.modmore.com/simplecart/
Или эти дыры только у нас? У них все фильтруется?
If you have information about how these vulnerabilities work, please email that to security@modx.com. We're working on fixing vulnerabilities, but don't have all the information yet.
Тема явно произвела впечатление.
I've just finished reading through the comments and wanted to add one thing: please email security@modx.com with details of vulnerabilities!
Earlier today Jason got information that made it clear there are serious vulnerabilities and he has been working on fixing them since, and as member of the security team he asked me to help as well. Thanks to help from people like Nikolay and Bezumkin we've found and fixed some issues, but we still don't have all the information about how some of the things discussed in the comments work. So please, if you have any details or proof of concepts of attacks, please email those to security@modx.com so we can make MODX safer and release an update soon.
Earlier today Jason got information that made it clear there are serious vulnerabilities and he has been working on fixing them since, and as member of the security team he asked me to help as well. Thanks to help from people like Nikolay and Bezumkin we've found and fixed some issues, but we still don't have all the information about how some of the things discussed in the comments work. So please, if you have any details or proof of concepts of attacks, please email those to security@modx.com so we can make MODX safer and release an update soon.
It's great!
I know the man who knows some vulnerabilities of MODX. But he got a not very good experience in communicating with the MODX team. And the MODX community suffer from this misunderstanding between you and him.
I know the man who knows some vulnerabilities of MODX. But he got a not very good experience in communicating with the MODX team. And the MODX community suffer from this misunderstanding between you and him.
Hopefully he will give the security team another chance! It is hard to communicate sometimes, but we all want to make MODX better. We're not perfect.
Dear Mark, could you please consider the possibility of voting for the pull requests or issues?
I think this is the better alternative to e-mails.
In case there are lots of votes for the particular issue on github it is a clear signal for the developers that the issue requieres urgent reaction.
UPD Vasiliy just noticed that voting is available on GitHub. So lets use it))
I think this is the better alternative to e-mails.
In case there are lots of votes for the particular issue on github it is a clear signal for the developers that the issue requieres urgent reaction.
UPD Vasiliy just noticed that voting is available on GitHub. So lets use it))
The security@modx.com email should be used for security issues. That way we can discuss it and prepare a patch privately, make sure it fixes the problem, and also prepare communication around it when a release is made available. I'm all for transparency and using github to vote for regular features, but security issues should not be public right away. ;)
Hello Mark! Lest you orde all an interpreter can let Vasili Naumkin(bezumkin) and Nicholas Lanets will be a bridge between you and the Russian-speaking community for better communication? That is to say officials modx in the Russian-speaking community and be part of your team.
Just for the record, I don't work for the company MODX. I used to work for them, but have been independent for 3 years now.
I am part of the security team and core integrators on the MODX project though. So if anyone from the Russian-speaking community would like to discuss project related things with me, I am more than happy to work with them.
I am part of the security team and core integrators on the MODX project though. So if anyone from the Russian-speaking community would like to discuss project related things with me, I am more than happy to work with them.
So please, if you have any details or proof of concepts of attacks, please email those to security@modx.com so we can make MODX safer and release an update soon.Вам уже даже пример показали. А вы все понять не можете…
Thanks to help from people like Nikolay and Bezumkin we've found and fixed some issuesОчень жаль, что Николаю выражается благодарность за то, что он развел троллинг со сменой префиксов. Если бы все согласились сего исправлением — дырка бы так и осталась в ядре. Так за что спасибо то?)
Пусть будет спасибо за привлечение внимания к дыре. Если так будет корректнее
Марку просто тяжело с русским, по этому он увидел 2 поста на эту тему от Василия и Николая и вот их благодарит.
Но мы то знаем, кто наш Герой)
Спасибо Евгений.
P.S.: Про Зенита тоже забыли…
P.P.S: Может каждому в репу дать по 100+?
Но мы то знаем, кто наш Герой)
Спасибо Евгений.
P.S.: Про Зенита тоже забыли…
P.P.S: Может каждому в репу дать по 100+?
P.P.S: Может каждому в репу дать по 100+?На хабре за подобные предложения бан дают)))
I thanked them for responsibly sending us information about the vulnerabilities discussed here. Nikolai sent an email to security@modx.com which led to the discovery of SQL injections. Changing the table prefix is not a sufficient fix, I agree. Bezumkin also reached out to Jason privately to investigate another vulnerability.
Я понимаю, что вы знаете о различных уязвимостей. Мы исправили несколько прямо сейчас. Не могли бы вы, пожалуйста, напишите security@modx.com с вашей информацией, чтобы мы могли быть уверены, что MODX безопасен снова? Спасибо!
— I understand you know about the different vulnerabilities. We've fixed a few now. Could you please email security@modx.com with your information so we can be sure MODX is secure again? Thank you!
— I understand you know about the different vulnerabilities. We've fixed a few now. Could you please email security@modx.com with your information so we can be sure MODX is secure again? Thank you!
Как минимум, у меня в планах следующее:
— Аудит modhost.pro/
— Проверка компонентов (хотя бы из modstore.pro)
А потом уже может быть я напишу на security@modx.com
— Аудит modhost.pro/
— Проверка компонентов (хотя бы из modstore.pro)
А потом уже может быть я напишу на security@modx.com
Hi Mark. They broke me hard. Help restore the site? topthaico.com/
Дядя Женя, простишь их? :)
Давай для начала с ru сегментом разберемся)
Поднимем качество наших продуктов до должного уровня, а потом будем думать как изменить ситуацию глобально. Просто получится опть так: выпустили какой-то патч и все успокоились. А дырявые компоненты как были — так и останутся.
Если у зарубежного сегмента будет желание подключить проекты modmore.com, modxcloud.com и т.п. к нашему движению аудитов — милости просим на security@agel-nash.ru
Поднимем качество наших продуктов до должного уровня, а потом будем думать как изменить ситуацию глобально. Просто получится опть так: выпустили какой-то патч и все успокоились. А дырявые компоненты как были — так и останутся.
Если у зарубежного сегмента будет желание подключить проекты modmore.com, modxcloud.com и т.п. к нашему движению аудитов — милости просим на security@agel-nash.ru
Evo лечите — там дырка. У меня порядка 20 клиентов на разных Evo эту гадость словили за последний год.
Обновляйтесь хотя бы до 1.1.0, прогоняйте сайты через антивирус, чистите, что найдет + потом в ручном режиме по датам изменения.
Обновляйтесь хотя бы до 1.1.0, прогоняйте сайты через антивирус, чистите, что найдет + потом в ручном режиме по датам изменения.
По датам изменения бесполезно он их выставляет старые
Если все сайты работают от одного юзера — то достаточно было ломануть всего один.
Это кстати ломает бот, который заточен под вордпрес, и modx evo он ломает на ура, а через него заражает все сайты. Обновляйте evo и все плагины evo gallery например точно нужно последней версии
То бишь это не через сабжевую дыру в Revo? Такое совпадение просто, у нас больше года не было вирусни, хотя Ево висел 1.0.14 и 1.0.15 около 15 сайтов. На прошлой неделе обновили до 1.1, и вот прилетело счастье :)
Василий Наумкин, да, у нас всегда сразу все папки заражаются, собираемся делать защиту от этого…
Вася, Evogallery на одном только использую, надо проверить. Модули имеете в виду, не плагины?
Василий Наумкин, да, у нас всегда сразу все папки заражаются, собираемся делать защиту от этого…
Вася, Evogallery на одном только использую, надо проверить. Модули имеете в виду, не плагины?
Да модуль этот посмотрите. Это не сабжевая дыра, так как ломали так давно. После тотальной чистки сайтов от левых файлов и обновления сайта на evo все прекратилось
Один умный человек положил в компонент Evogallery тестовый файл uploadify.php. Этот файл позволяет любому пользователю загружать любую информацию на сервере. В более поздних версиях EvoGallery файл был удален, но т.к. большинство обновляют движки перезаписью файлов — файл так и остался не затронутым. И только сейчас додумались сделать так.
К слову, рядом с uploadify.php должен быть еще один файл, который позволяет получать список файлов в папках на сервере. Так же без всякой авторизации.
К слову, рядом с uploadify.php должен быть еще один файл, который позволяет получать список файлов в папках на сервере. Так же без всякой авторизации.
Всем благодарность написали)
modx.com/blog/modx-revolution-2.5.2
modx.com/blog/modx-revolution-2.5.2
Не всем, а никому!
Это Зенита заслуга, а Василий с Николаем только префиксы меняли.
Это Зенита заслуга, а Василий с Николаем только префиксы меняли.
Как в детском саду…
Подключаю обычно клиентов к https://virusdie.ru. Может конечно не панацея, но проблемы с вирусами перестали волновать =)
А ломают с вероятностью 99% действительно через Evo.
А ломают с вероятностью 99% действительно через Evo.
Выложили новую версию 2.5.2 на modx.com/download
Список изменений: raw.githubusercontent.com/modxcms/revolution/v2.5.2-pl/core/docs/changelog.txt
Большое спасибо Евгению, Василию, Николаю и другим кто принимал в этом участие.
Евгений, интересно услышать ваше мнение по поводу закрытия дыр. Как по Вашему, всё закрыли?
Список изменений: raw.githubusercontent.com/modxcms/revolution/v2.5.2-pl/core/docs/changelog.txt
Большое спасибо Евгению, Василию, Николаю и другим кто принимал в этом участие.
Евгений, интересно услышать ваше мнение по поводу закрытия дыр. Как по Вашему, всё закрыли?
Хорошо пятнистый;), который выпускает исправления все проблемы, мы знаем прочь. Быстрый объявление выходит в ближайшее время, полное объявление с более подробной информации о том, что было исправлено будет выходить завтра или в ближайшие несколько дней.
Как вы, вероятно, может себе представить, что это критическое обновление каждый должен установить как можно скорее. Пожалуйста, дайте нам знать, если github.com/modxcms/revolution/issues есть какие-либо новые ошибки, или security@modx.com новых вопросов безопасности.
/// — ///
Well spotted ;) That releases fixes all issues we're aware off. A quick announcement is going out shortly, a full announcement with more details on what has been fixed will be going out tomorrow or the next few days.
As you can probably imagine, this is a critical update everyone should install as soon as possible. Please let us know at github.com/modxcms/revolution/issues if there are any new bugs, or security@modx.com for new security issues.
Как вы, вероятно, может себе представить, что это критическое обновление каждый должен установить как можно скорее. Пожалуйста, дайте нам знать, если github.com/modxcms/revolution/issues есть какие-либо новые ошибки, или security@modx.com новых вопросов безопасности.
/// — ///
Well spotted ;) That releases fixes all issues we're aware off. A quick announcement is going out shortly, a full announcement with more details on what has been fixed will be going out tomorrow or the next few days.
As you can probably imagine, this is a critical update everyone should install as soon as possible. Please let us know at github.com/modxcms/revolution/issues if there are any new bugs, or security@modx.com for new security issues.
Thanks Mark.
It seems that I am the first who has downloaded a new version :)
New xPDO version?.. OK!
It seems that I am the first who has downloaded a new version :)
New xPDO version?.. OK!
The download count might be cached, it was on 1 download for a while :P
Ребята привет!
Работаю на Модекс Рево, да вот повадились ломать и заражать(( topthaico.com/
На это раз совсем критично. Хостеры грят ничего не можем поделать, белое окно в админке все дела.
Если есть возможность помочь, буду рад выслушать советы.
Всем спасибо!
Работаю на Модекс Рево, да вот повадились ломать и заражать(( topthaico.com/
На это раз совсем критично. Хостеры грят ничего не можем поделать, белое окно в админке все дела.
Если есть возможность помочь, буду рад выслушать советы.
Всем спасибо!
Например, тут обсуждали.
У меня сегодня снесли весь сайт! Оставили 1 папку core
Я был в ШОКЕ. Восстановил файлы из бекапа.
Потом смотрел логи:
POST /assets/components/gallery/connector.php?src=http
GET /assets/components/gallery/cache/http.29d7804edf5d30594559cb7c7f0362bc.php
POST /assets/components/gallery/cache/http.29d7804edf5d30594559cb7c7f0362bc.php?login=canshu
GET /assets/components/gallery/cache/md.php
GET /connectors/element/event.php?login=Hcba7f
GET /manager/controllers/onlineusers.php?login=Hcba7f
GET /check.php
GET /moving.php?rdir=postnewl&url=www.datacen2017.top/0809/lt20180806bk-1/4/
GET /postnewl/install.php?install=1
GET /postnewl/index.php?rset=set&hzui=cfm
GET /postnewl/snpdvkwpc-w310934-tuj/
Папки manager и connectors у меня изменены, т.е. они их создали.
обновил Gallery 1.7.1-pl
Закинул в папку /assets/components/gallery/cache/ файл .htaccess
Я был в ШОКЕ. Восстановил файлы из бекапа.
Потом смотрел логи:
POST /assets/components/gallery/connector.php?src=http
GET /assets/components/gallery/cache/http.29d7804edf5d30594559cb7c7f0362bc.php
POST /assets/components/gallery/cache/http.29d7804edf5d30594559cb7c7f0362bc.php?login=canshu
GET /assets/components/gallery/cache/md.php
GET /connectors/element/event.php?login=Hcba7f
GET /manager/controllers/onlineusers.php?login=Hcba7f
GET /check.php
GET /moving.php?rdir=postnewl&url=www.datacen2017.top/0809/lt20180806bk-1/4/
GET /postnewl/install.php?install=1
GET /postnewl/index.php?rset=set&hzui=cfm
GET /postnewl/snpdvkwpc-w310934-tuj/
Папки manager и connectors у меня изменены, т.е. они их создали.
обновил Gallery 1.7.1-pl
Закинул в папку /assets/components/gallery/cache/ файл .htaccess
Options -Indexes
<Filesmatch ".(php)$">
order allow,deny
deny from all
</Filesmatch>
<Files ~ ".(php)$">
Deny from all
</Files>
аналогичный лог и в тот же день 09 августа 2018
алгоритм тот же
залили в /connectors/ Dark Shell
залили свои sitemaps
натолкали японского контента
каталоги не удалили, потому обновился вовремя до 2.6.5
core/cache/upgrademodx/versionlist
error_log
pressthiso/moban.html
sitemaps/sitemap10.xml
…
sitemaps/sitemap1.xml
pressthiso/error_log
pressthiso/install.php
pressthiso/extenupdates.php
pressthiso/index.php
connectors/element/niko.php
assets/components/gallery/cache/error_log
assets/components/gallery/cache/phpThumbCacheStats.txt
алгоритм тот же
залили в /connectors/ Dark Shell
залили свои sitemaps
натолкали японского контента
каталоги не удалили, потому обновился вовремя до 2.6.5
core/cache/upgrademodx/versionlist
error_log
pressthiso/moban.html
sitemaps/sitemap10.xml
…
sitemaps/sitemap1.xml
pressthiso/error_log
pressthiso/install.php
pressthiso/extenupdates.php
pressthiso/index.php
connectors/element/niko.php
assets/components/gallery/cache/error_log
assets/components/gallery/cache/phpThumbCacheStats.txt
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.