Последние темы


Безопасность ModX

  • @timm фуууу, да это развод Наумкина, сам префикс выложил...

  • самый простой, по моему, способ защиты от слепых инъекций это просто ограничивать кол-во символов в параметре, чтобы ломатели не могли строить запросы типа: index.php?id=3+and+substring((select+column_name+from+information_schema.columns+where+table_name=0x6262325f7573657273+limit+1,1),1,1)='i'
    Лично в таком варианте, если ID должно быть числом и только числом, его можно просто приводить к типу Integer ( $id = (int) $_POST('id'); ).
    Ну а в остальном резать символы до 10-15 и инъекция не пройдет.

  • @Gulik сказал Безопасность ModX:

    @timm фуууу, да это развод Наумкина, сам префикс выложил...

    вы не правы, вот этот пост:
    https://modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70625

    появился вчера, а остальные посты были сильно раньше.
    Зенит реально взломал modx pro

  • @slaad Да вот читайте с этого места, все станет ясно https://modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70242

  • @slaad

    Зенит реально взломал modx pro

    Да, но сомневаюсь, что с помощью кода навроде как Евгений кидал.

    Пока, например, я вижу такие изменения в компоненте Василия:
    https://github.com/bezumkin/Tickets/commit/b3251a12e557cc7c067a30e97594ba609c59f02d

    Для getProducts, думаю, это не страшно, т.к. он не использует xPDO. Но может там есть другие дыры, хотя везде используется PDO.

  • @Gulik сказал Безопасность ModX:

    @slaad Да вот читайте с этого места, все станет ясно https://modx.pro/security/10266-critical-vulnerability-in-modx-revolution/#comment-70242

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

    Хронология такая:
    Появляется Зенит и пишет, что префикс ломается брут форсом посимвольным перебором.
    Его просят доказать. Он гнет пальцы. Василий его выкидывает с форума меняя его комментарий (на Злой Василий меня забанил)
    Все пугаются, что Зенит после бана все же исправил коммент. Василий признается, что это сделал он. Все выдыхают свободно.
    Это было до 8 ноября.
    Вчера Зенит вернулся и предоставил префикс таблицы модх про, но ответил на один из ранних постов, из-за чего комментарий отображается выше не по хронологии. После чего Василий снял шляпу и убежал править компоненты.

    Дыра действительно в xPDO и еще бог знает где...

  • @slaad Прощу прощения, не заметил (

  • В его примере 4 символа, а если добавить ещё хотя бы парочку то сервак будет отрубать соединение по таймауту (если он настроен). Жути наводит зачем-то.

    Никто и ничего не отрубит. Проверка 1 символа = 1 запрос на сервер.

    Вот код от Евгения. По-моему это наёбка какая-то. Тут просто символ сравнивается с таким же в пароле, т.е. пароль заранее известен.

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

    ord($char) == ord($str[$i])
    

    мы будем сравнивать ответ от сервера. В этом и смысл слепой SQL-injection. Заставить отвечать сервер по разному если символ подошел и если не подошел. И демонстрацию этого способа я оставил за кадром.

    самый простой, по моему, способ защиты от слепых инъекций это просто ограничивать кол-во символов в параметре, чтобы ломатели не могли строить запросы типа

    Это способ не поможет, т.к. данные могут передаваться разными способами. GET, POST, COOKIE

    Лично в таком варианте, если ID должно быть числом и только числом, его можно просто приводить к типу Integer.

    Да. Такой фикс работает. Ищите упоминание Василия "спасибо за PR" в топике на modx.pro. Просто люди сразу не смекнули чего этот фикс делает.

    Еще вопросы? Или будем дальше утверждать, что я жути навожу?

  • @Gulik да ничего страшного, мне просто тоже не очень нравится как там комментарии отображаются))

  • @Agel_Nash ну да, этот код был в ответ Ланца сколько времени занимает перебор строки разными способами - посимвольно или целиком строкой
    По хорошему самое интересеное в более ранних постах Евгения https://modx.pro/users/agel_nash/comments/?page=4

  • @Agel_Nash

    Никто и ничего не отрубит. Проверка 1 символа = 1 запрос на сервер.

    Ок, согласен.

    В этом и смысл слепой SQL-injection. Заставить отвечать сервер по разному если символ подошел и если не подошел. И демонстрацию этого способа я оставил за кадром.

    Вот и получается, что самое главное закадром 🙂 Поэтому такая была моя реакция. Спасибо, погуглю на эту тему.

    Еще вопросы? Или будем дальше утверждать, что я жути навожу?

    Пока ты ничего не показал конкретного, вопрос не закрыт. Остается поверить наслово и отправиться в гугл.

  • По ссылке от @slaad увидел продолжение от Евгения. Теперь понятно.

    Вообще не понятно зачем было изобретать велосипед xPDO, есть же куча других ORM.

  • @Agel_Nash Я все же особо не пойму почему такая шумиха вокруг этих префиксов?
    Если нашли уязвимый (не фильтруемый) параметр, то ясно, что можно получить доступ ко всему сайту, префиксы не нужны. Или префикс это для демонстрации и только?

  • @Gulik Не было бы никакой шумихи, если бы решение изначально было предложено верное. Я пришел в топик лишь для того, чтобы объяснить людям: смена префикса не панацея и дырку не закрывает.

    @Andchir Ну и хорошо, что теперь нет никаких наебок:-)

  • @Agel_Nash сказал:

    Я пришел в топик лишь для того, чтобы объяснить людям: смена префикса не панацея и дырку не закрывает.

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

  • @Andchir И это еще один перл. Префикс он прячет из системного конфига который виден только админу. Но Коле этого не объяснить - он же профи. Куда нам до него...

  • @Agel_Nash Ясно, значит просто демонстрация. Я вас взломал! Чем докажешь? Вот вам префикс...
    Все же, кончено, смена префикса несколько замедлит процесс взлома. Ну очень на чуть-чуть))
    После его подбора можно так же идти в таблицу юзеров и подбирать их логин, а затем их пароль в виде хеша... А потом искать этот хеш на cmd5...
    Или все же эта дырка в ModX предусматривает возможность вносить изменения в базу? Запросы UPDATE или INSERT проходят?

  • @Agel_Nash

    Но Коле этого не объяснить - он же профи. Куда нам до него...

    У меня подозрение, что Николай специально хотел приберечь эту дырку для себя, побыть богом это же так приятно 🙂

  • @Andchir сказал Безопасность ModX:

    @Agel_Nash

    Куда нам до него...

    У меня подозрение, что Николай специально хотел приберечь эту дырку для себя, побыть богом это же так приятно 🙂

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

  • @Gulik сказал Безопасность ModX:

    @Agel_Nash Ясно, значит просто демонстрация. Я вас взломал! Чем докажешь? Вот вам префикс...
    Все же, кончено, смена префикса несколько замедлит процесс взлома. Ну очень на чуть-чуть))

    верно

    После его подбора можно так же идти в таблицу юзеров и подбирать их логин, а затем их пароль в виде хеша... А потом искать этот хеш на cmd5...

    Как хеш MODX Revo довольно трудно сбрутить. И cmd5 не поможет. Только если на заказ через фермы.

    Или все же эта дырка в ModX предусматривает возможность вносить изменения в базу? Запросы UPDATE или INSERT проходят?

    Все зависит от конкретного сайта.

    Давайте условимся на следующем. В MODX Revolution на текущий момент есть несколько дырок. Эксплуатация этих дырок усложняется рядом условий которые должен выполнить разрабочтик компонента.

    [Вырезано админом от любителей ломать сайты]

    P.S. После прочтения удалите мой комментарий. Чтобы на весь мир не светилось.

 

Последние комментарии

  • 0_1575831062911_shk-logo-small-blue.png
    Что нового в версии 4.1.3:

    Добавлен компонент "Отзывы и рейтинги" (есть интерфейс для администратора). Обновлены версии всех сторонних пакетов.

    Демо-сайт обновлен. https://shk4-demo.modx-shopkeeper.ru/
    Логин: admin
    Пароль: admin

    0_1575830694586_ru_screenshot001.png

    0_1575830705492_ru_screenshot002.png

    0_1575830710901_ru_screenshot003.png

    Читать далее
  • C

    Если вдруг кто-то озадачится.
    В файле updateorderstatus.class.php

    //Формируем письмо $orderOutputData = $shopCart->getOrderData( $order_id ); $chunkArr = array( 'orderID' => $order_data['id'], 'orderDate' => $order_data['date'], 'statusName' => $status_data['label'], 'orderCurrency' => $shopCart->config['currency'], 'orderOutputData' => $orderOutputData, //добавляем строку 'status' => $status_data['color'], );

    Читать далее
  • Участник @Vladislava написал в Проблема с giftCards:

    @Andchir Спасибо большое! А не скажете ещё, где можно скачать Compare? Тоже не могу найти.

    Сравнение товаров
    https://e-store.shopkerx.net/katalog/modx_extras/compare

    Читать далее
  • V

    @Andchir Спасибо большое! А не скажете ещё, где можно скачать Compare? Тоже не могу найти.

    Читать далее