Fi1osof 08 марта 2014 1 35
Евгений ака Agel_Nash в очередной раз нашел способ выполнять взлом MODX Revolution. По сути он объединил в данном случае сразу две более ранние уязвимости — подмена контекста в запросах к коннекторам, и, собственно, SQL-инъекции в xPDO. Первую уязвимость в свое время как бэ прикрыли в версии 2.2.8. Сейчас Евгений просто выполнил чуть другой финт, который позволяет сделать то же самое, и во вчерашнем релизе 2.2.13 добавили еще проверочку, которая защищает от подобного рода хаков (хотя я по прежнему убежден, что им следует дергать контекст из БД, убеждаясь, что запрошенный контекст действительно существует, а не просто играться с новым объектом). А вот саму уязвимость с SQL-инъекциями пока так и не закрыли, и это очень даже не хорошо. Могу точно сказать, что есть еще не мало способов выполнить этот эксплойт, так что они прикрыли только одну из кучи дверей, ведущих к данной дыре.

Так что же делать, чтобы дополнительно обезопаситься от этого? Ответ прост — используйте другие названия для системных папок connectors, core, manager, а так же свой уникальный префикс для таблиц вместо _modx. Это в значительной степени повысит безопасность сайта, так как во-первых, надо знать где коннекторы, чтобы отправить на них атакующие запросы, а во-вторых, SQL-инъекция требует знания полного наименования таблицы, чего злоумышленник не может сделать, не получив конфиги сайта.

Собственно, вкупе с этим и анонсирую новую сборку ShopModxBox. В ней как раз доработана корректная работа с кастомными системными папками и префиксами таблиц. То есть инсталлируете чистый MODX с кастомными конфигами, накатываете на него эту сборку и она будет работать нормально.
Есть только один момент — хотя я и добавил в пространства имен плейсхолдеры-конфиги типа [[++core_path]], в момент снятия снимка эти конфиги источников файлов все равно конвертируются в абсолютные значения в соответствии с текущими конфигами сайта-источника, и потому в снимок попадают абсолютные значения. Итог — у вас часть источников файлов будет иметь некорректные пути. Их надо будет вручную поправить в настройках источников файлов.

Еще такой момент: если кто-то хочет свой MODX-сайт изменить, чтобы в нем были другие папки и префиксы таблиц, то здесь опять-таки помогает vapor. Делаете им снимок текущего сайта, инсталлируете новый MODX Revo со своими кастомными папками и префиксами, и накатываете на него этот снимок. В большинстве случаев все будет ОК.
35 комментариев
v
vbf 10 марта 2014г в 14:11 #
Всем привет
Пакет автоматом устанавливается в web контекст, не смотря на то, что контекстом по умолчанию является совсем другой. Не знаю, почему, но я как-то с самого первого сайта стал все делать в контексте, отличном от стандартного. Попробую перенести все в другой контекст и протестировать, может и все будет нормально работать, но было бы шикарно, если бы все устанавливалось в контекст по умолчанию (index.php)
Еще обратил внимание, что после установки язык Manager-а меняется на английский, никакх проблем переключить нет, конечно, но немного шокирует, особенно если привык работать в русском интерфейсе :-)
Огромное спасибо за сборку, давно ждал реализацю магазина именно от вас, так как симпатизирую вашему подходу.
И последнее, подскажите, как поддержать ваш проект через PayPal?
Fi1osof1
Fi1osof 10 марта 2014г в 14:30 #
Добрый день!

Уточняю на счет контекста, языка и т.п.: не раз говорил о том, что этот снимок сайта полностью затирает весь MODX, заливая свое поверх. При этом все таблицы, куда должно что-то записаться, предварительно очищаются. То есть если вы ставите чистый MODX Revolution, добавляете там новый контекст, меняете в настройках контекст по умолчанию и т.п. — все это перетирается при установке.
Перенести в другой контекст на готовом магазине можно, но не просто. К сожалению, в MODX-е все завязанное на контекст не по id идет, а по имени контекста, то есть не достаточно просто в таблице изменить имя контекста.

Огромное спасибо за сборку
Огромное пожалуйста! :)

И последнее, подскажите, как поддержать ваш проект через PayPal?
А справа в блоке «Отблагодарить» указан PP-аккаунт — info@modxclub.ru
Заранее спасибо!
v
vbf 10 марта 2014г в 15:11 #
На счет затирания я все понял, и даже уже не раз проверил :-)
Проблему осознал, но все же попробую. Сейчас установил пакет, перенес все в другой контекст, сменил контекст по умолчанию в настройках… Все сбросил, обновил. Пока все работает, проблем никаких пока не обнаружил.
А не подскажете, где могут быть прямые ссылки на контекст в сборке? Что бы обратить более пристальное внимание? Я не использую много контекстов, я просто использую другой вместо стандартного./
Небольшую благодарность отправил.
Fi1osof1
Fi1osof 10 марта 2014г в 15:38 #
На счет смены контекстов — все же идея не очень удачная. В MODX-е далеко не идеально все сделано с контекстами. К примеру, не реализован полноценный механизм инициализации кастомных контекстов в запросах. Вот если у вас на сайт заходят пользователи, в index.php прописано по умолчанию $modx->initialize('web'); Даже если вы в плагине пропишите $modx->switchContext($ctx);, это все равно не будет корректно работать, так как инициализация пользователя выполняется именно во время инициализации контекста через $modx->initialize(). Это скажется на корректной инициализации пользователя, его правах и т.п. Здесь остается только один вариант — в index.php прописывать ручками нужный контекст.
Второй момент — инициализация контекста в коннекторах. Проблема все та же…

И по соображениям безопасности у нас в коннекторах жестко прописана инициализация контекста web (точнее жестко указываем, какой контекст инициализировать).
Скорее всего, пока не появится корректный механизм по контекстам, так и останется по умолчанию web.
В общем, советую все-таки оставлять по умолчанию контекст web. Это еще не все моменты.

А не подскажете, где могут быть прямые ссылки на контекст в сборке? Что бы обратить более пристальное внимание?
Вопрос не совсем понял.

За благодарность спасибо! Получил.
v
vbf 10 марта 2014г в 15:44 #
Спасибо, понял, не буду выпендриваться, я получил ответы на все вопросы
Fi1osof1
Fi1osof 10 марта 2014г в 15:56 #
Пожалуйста!
B
Breachman 27 марта 2014г в 12:17 #
Здраствуйте Николай! Был вопрос, может быть я где то пропустил, но в мануалах нет по этому поводу ничего, что бы помогло мне. После установки Shopmodxbox на чистый Revolution, стирается запись в БД от старого админа (его логин и пароль), который был при установке. Вместо него встает новый admin. Я в настройках профиля сменил у этого админа логин и пароль. Далее выход из админки, а зайти обратно не могу. При новом заходе ошибка не выводиться, выдается обратно пустая форма входа. В БД таблица с сессиями не сломана. работает. То есть при новом вводе логина и пароля создается новая сессия. в БД она присутствует. Как можно решить данную проблему, подскажите пожалуйста хотя бы куда копать в поиске данной проблемы. Облазил уже форумы. Ответа который бы помог не нашел.
Fi1osof1
Fi1osof 27 марта 2014г в 12:41 #
Добрый день!
То, что удаляется старый пользователь, и создаются новые — это нормально. Когда накатывается сборка, тогда таблица юзеров очищается полностью, и создаются новые. Скорее всего все-таки вы в чем-то ошиблись при редактировании админа. Попробуйте накатить сборку заново, но не редактировать админа, а создать нового пользователя, и в случае успеха уже попробуйте админа отредактировать.
На случай, если в админку вообще никак не войти, а надо очень (при этом есть доступ по ftp или типа того), открывайте файл manager/index.php и сразу после инициализации MODX-а ($modx->initialize()) пишите:
$user = $modx->newObject('modUser', array(
    "username" => "myuername",
    "password"    => "mypassword",
));
$profile = $modx->newObject("modUserProfile", array(
    "email"    => "myemail"
));
$user->addOne($profile);
$user->sudo = 1;
$user->save();
return;

После чего заходите на страничку админки и будет создан пользователь. Затем комментируете или удаляете этот код и заходите под новой учетной записью.
B
Breachman 27 марта 2014г в 13:49 #
Срочно не надо. Попробовал как Вы сказали, создал нового пользователя. В настройках указал все тоже самое что у админа, кроме атрибутов (в дополнительном поле). Результат такой же, пустая форма при вводе логина и пароля.
Fi1osof1
Fi1osof 27 марта 2014г в 13:57 #
Пришлите в личку адрес сайта, я посмотрю вечером что там и как (только базового пользователя admin оставьте)
B
Breachman 27 марта 2014г в 14:01 #
находиться на локальном сервере, могу только дать доступ через удаленку.
Fi1osof1
Fi1osof 27 марта 2014г в 14:35 #
Тогда пробуйте на нормальном сервере. Скорее всего что-то не то с локальным сервером.
B
Breachman 27 марта 2014г в 14:43 #
Спасибо :)
Fi1osof1
Fi1osof 27 марта 2014г в 20:25 #
Не за что!
s
sodos 02 апреля 2014г в 18:15 #
Николай, доброго дня! Установил ShopModxBox на чистый Revo. Не пойму что не так, ибо абсолютный нуб в modx, но при попытке просмотра любой из страниц, кроме главной ничего не вижу: «The requested URL /o-shopmodxbox.html was not found on this server.» Главная работает нормально… Пожалуйста, подскажите в чем я ошибся?
Fi1osof1
Fi1osof 02 апреля 2014г в 18:23 #
Проблема не в модэксе, а в подмене УРЛов. Там ЧПУ, соответственно надо правила подмены прописывать. Если у вас веб-сервер апач, то в корне сайта просто переименуйте ht.access в .htaccess
s
sodos 02 апреля 2014г в 18:39 #
Да-да, уже переименовал, но почему-то не помогло…
Fi1osof1
Fi1osof 02 апреля 2014г в 18:41 #
Или не апач, а нгинкс используется, или правила не учитываются. В любом случае, это вопрос к веб-серверу, а не к MODX-у. Здесь вам самостоятельно придется разбираться.
s
sodos 02 апреля 2014г в 18:46 #
Да, скорее всего апач неправильно настроен, спасибо за оперативный ответ!
Fi1osof1
Fi1osof 02 апреля 2014г в 18:50 #
Не за что!
s
sodos 02 апреля 2014г в 18:58 #
Нашел! Вдруг кому пригодится, оставлю здесь: dig.org.ua/2008/01/26/mod-rewrite-on-apache2-in-ubuntu/
Fi1osof1
Fi1osof 02 апреля 2014г в 19:06 #
Ну да, не было мода для апача, поэтому и правила не учитывались.
n
nineman 22 августа 2014г в 18:33 #
Попробовал установить вашу сборку, сделал как все сказали, установилась за 36 секунд.
Но появилась проблема, исчезло верхнее меню. Устанавливал на чистый modx-2.3.1-pl
В чем причина не подскажете? Хостюсь на hostgator.com Apache: 2.2.26 PHP: 5.4.29
Хотя странно при обновлении Resizer написал
[Resizer]
PHP version: 5.2.17
Resizer requires PHP 5.3.2 or higher
В чем прикол не могу понять, версия на сервере PHP: 5.4.29 вроде как.
.htaccess изменил.
Fi1osof1
Fi1osof 22 августа 2014г в 18:35 #
Проблема в том, что ставите на 2.3.1 (там внутряк весь изменили).
Ставить надо на 2.2+ (сейчас актуальная 2.2.15).
n
nineman 22 августа 2014г в 19:27 #
Попробовал установить 2.2.15 после установки при заходе в админку пишет ошибку syntax error: и блок "Недавно редактированные ресурсы" постоянно грузится и не может подгрузиться, соответственно ничего не работает. В чем прикол?
Fi1osof1
Fi1osof 22 августа 2014г в 19:31 #
Шлите мне на n.lanets@modxclub.ru адрес админки и логин/пароль в нее, я гляну. Судя по всему ошибка разбора JSON.
n
nineman 22 августа 2014г в 19:38 #
Отправил
Fi1osof1
Fi1osof 22 августа 2014г в 19:40 #
Сейчас гляну.
Fi1osof1
Fi1osof 22 августа 2014г в 19:47 #
Все встало без проблем, никаких ошибок не наблюдаю. Проверяйте. Логин/пароль поставил как присылали.
n
nineman 22 августа 2014г в 20:14 #
Действительно все встало, хз откуда были ошибки. Пощюпаю сборку потом отпишусь.
S
Sanuamba 21 мая 2015г в 21:27 #
После установки shopModx первым способом при попытке открыть любую страницу кроме Главной, выдается сообщение
Not Found
The requested URL /index.php was not found on this server.
Что может быть не так в моем случае?
Fi1osof1
Fi1osof 22 мая 2015г в 14:43 #
Смотрите подмену УРЛов (на уровне .htaccess или nginx, смотря что и как у вас на сервере настроено). Особо вам никто не поможет, так как это вопрос в хостинге, а не в MODX-е.
S
Sanuamba 22 мая 2015г в 20:51 #
Спасибо, буду разбираться.
M
MisterN 13 апреля 2016г в 15:17 #
Походу, ссылки на статью надо менять на такой вид, сайт Борисова взломали и уничтожили. Шучу конечно, просто он его отключил наверно.
Fi1osof1
Fi1osof 13 апреля 2016г в 17:29 #
Можем все-таки заработает :) А народ пусть вебархивами учится пользоваться)
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.