Константин Обухов
С нами с 03 марта 2016; Место в рейтинге пользователей: #333Срочные исправления безопасности в MODX 2.5.2
Привет, друзья! У меня для вас отличная новость!
Команда MODX работала всю ночь не покладая рук, чтобы подготовить для нас срочный выпуск MODX 2.5.2, закрывающий все известные на сегодня уязвимости.
Команда MODX работала всю ночь не покладая рук, чтобы подготовить для нас срочный выпуск MODX 2.5.2, закрывающий все известные на сегодня уязвимости.
- Скрыты критичные системные настройки [#13170]
- Запрет возможности локального подключения файлов (LFE) [#13177]
- Запрет возможности подмены пути при запуске $modx->runProcessor [#13176]
- Запрет неавторизованного доступа к процессорам [#13175]
- Запрет подмены пути в параметре action объекта modConnectorResponse [#13173]
- Запрет слепой SQL инъекции при получении xPDOObject [подробности]
modMonitor. Кейс: поиск причины сброса кеша
Вот сейчас мне модмонитор сохранил кучу времени и нервных клеток. Хочу поделиться этим кейсом, так как он раскрывает весьма неочевидные, но при этом очень мощные возможности данного компонента.
Предыстория: клиент пишет, что показатели сайта в тестах гугла PageSpeed Insights низкие. Полез проверять. Обратил внимание, что гугл жалуется на долгий ответ от сервера (1.3 сек). Я удивился, так как перед тестом специально захожу на главную страницу, чтобы она закешировалась. Но нет, с каждым тестом как минимум на одной из версий (мобильной и обычной) долгий ответ. Здесь еще тонкость в том, что на сайте реализована отдельно мобильная версия и кеш у них раздельный. Полез опять в админку, проверяю настройки кеша где можно — везде все ОК. При этом проверяю кеш-файлы — а они постоянно сбрасываются, то есть для двух-трех документов они создаются, а потом сбрасываются.
Предыстория: клиент пишет, что показатели сайта в тестах гугла PageSpeed Insights низкие. Полез проверять. Обратил внимание, что гугл жалуется на долгий ответ от сервера (1.3 сек). Я удивился, так как перед тестом специально захожу на главную страницу, чтобы она закешировалась. Но нет, с каждым тестом как минимум на одной из версий (мобильной и обычной) долгий ответ. Здесь еще тонкость в том, что на сайте реализована отдельно мобильная версия и кеш у них раздельный. Полез опять в админку, проверяю настройки кеша где можно — везде все ОК. При этом проверяю кеш-файлы — а они постоянно сбрасываются, то есть для двух-трех документов они создаются, а потом сбрасываются.
Потенциальная уязвимость при получении объекта xPDO
Привет, друзья! Настало время подвести некоторые итоги по новости недельной давности.
Если кто не в курсе, в xPDO, а соотвественно, и в MODX обнаружилась уязвимость, позволяющая проводить слепые SQL инъекции и ломать сайты. Точнее как, обнаружилась… Всегда там была, и кому нужно — давно это знали.
Суть в том, что при получении объекта xPDO можно указать вторым параметром любую строку, и она не фильтруется.
Правда, про эту фичу нет ни слова в документации, где говорят только о
Если кто не в курсе, в xPDO, а соотвественно, и в MODX обнаружилась уязвимость, позволяющая проводить слепые SQL инъекции и ломать сайты. Точнее как, обнаружилась… Всегда там была, и кому нужно — давно это знали.
Суть в том, что при получении объекта xPDO можно указать вторым параметром любую строку, и она не фильтруется.
$modx->getObject('modResource', 'тут любой SQL код')
Этот код выполнит произвольный SQL запрос, потому что «фича, а не бага».Правда, про эту фичу нет ни слова в документации, где говорят только о
The criteria can be a primary key value, an array of primary key values (for multiple primary key objects) or an xPDOCriteria object.и никаких сырых SQL выражений.
modMonitor 2+
Несмотря на то, что в MODX нашлись критические уязвимости, я продолжаю дальше разработку на своей любимой платформе, и надеюсь другие так же будут делать. Лично я ни на минуту не задумался на счет смены движка. Уверен, эти дыры залатаются, и все будут спать спокойно.
Сегодня я выкатил обновленную версию компонента modMonitor, который так же, возможно, кому-нибудь немного расстроил сон. Во всяком случае обсуждений было много.
Сегодня я выкатил обновленную версию компонента modMonitor, который так же, возможно, кому-нибудь немного расстроил сон. Во всяком случае обсуждений было много.
Критическая уязвимость в MODX Revolution
Сильно в детали лезть не буду, просто скажу, что сейчас любой MODX Revo сайт потенциально уязвим. Дыра позволяет выполнить SQL-инъекции, в том числе с созданием на сайте привилегированных пользователей.
Базовые методы противодействия: подмена дефолтных системных папок (особенно connectors) и, главное — смена префикса таблиц. Так как далеко не все это делают, то можно сказать, большинство сайтов в зоне опасности. Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.
Если кто на уже рабочем сайте хочет префиксы сменить, я описывал метод здесь.
P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
Базовые методы противодействия: подмена дефолтных системных папок (особенно connectors) и, главное — смена префикса таблиц. Так как далеко не все это делают, то можно сказать, большинство сайтов в зоне опасности. Кто хочет ощутить это на себе, может в комментах написать ссылку на сайт.
Если кто на уже рабочем сайте хочет префиксы сменить, я описывал метод здесь.
P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
Минутка грамотности
Честно говоря, я вовсе не мастер русского языка, в школе перебивался с тройки на четвёрку. Но то, что я вижу в наших комментариях, просто приводит в уныние.
Давайте постараемся писать хоть немного грамотнее, всего несколько пунктов.
1. Самое наболевшее: тся\ться. Настолько всем надоело, что даже запустили отдельный сайт.
Давайте постараемся писать хоть немного грамотнее, всего несколько пунктов.
1. Самое наболевшее: тся\ться. Настолько всем надоело, что даже запустили отдельный сайт.
Ь ставится:
— В неопределённой форме глагола (инфинитиве): умывать(ся), беречь(ся).
— В окончании 2-го лица единственного числа настоящего или будущего времени: умываешь(ся), бережёшь(ся).
— После согласных (кроме «й» и «г» – ляг(те)) в формах повелительного наклонения: исправь(те).
— В возвратной частице (суффиксе), стоящей после гласного звука: вернусь, вернитесь, вернулись, вернувшись.
В остальных случаях в глагольных окончаниях ь не ставится: он пошёл умываться, но: он умывается
Выборка пользователей по определенным параметрам
Здравствуйте.
Нужно получить выборку активных (не забаненых и т.д.) пользователей, со всеми их полями, принадлежащих группе с id 4, от имени которых (createdby) существуют ресурсы, принадлежащие контексту moscow и опубликованные в данный момент.
Нужен нормальный запрос с $modx->newQuery(). Что бы потом можно было foreach $users… $user->get('username') получил имя пользователя, или например дополнительное поле пользователя extended.specialisation и другие.
Я вроде верно написал запрос в обычном синтаксисе, помогите пожалуйста с xPDO или как его зовут))
Нужно получить выборку активных (не забаненых и т.д.) пользователей, со всеми их полями, принадлежащих группе с id 4, от имени которых (createdby) существуют ресурсы, принадлежащие контексту moscow и опубликованные в данный момент.
Нужен нормальный запрос с $modx->newQuery(). Что бы потом можно было foreach $users… $user->get('username') получил имя пользователя, или например дополнительное поле пользователя extended.specialisation и другие.
Я вроде верно написал запрос в обычном синтаксисе, помогите пожалуйста с xPDO или как его зовут))
SELECT u.username, ua.* FROM `modx_users` as u
LEFT JOIN modx_member_groups as g ON g.member = u.id
LEFT JOIN modx_site_content as c ON c.createdby = u.id
LEFT JOIN modx_user_attributes as ua ON ua.internalKey = u.id
WHERE g.user_group = 4
AND c.published = 1
AND u.active = 1
AND c.context_key = 'moscow'
GROUP BY u.id
Спасибо заранее! Можно ли из плагина вызвать уведомление?
Добрый вечер, всем, кто нибудь подскажите —
сделал плагин на минимальную стоимость заказа — но как об этом уведомить на клиентской стороне покупателя, можно ли прям из плагина послать сообщение во всплывашку, идущую вместе с miniShop2?
Может метод есть какой-то? или надо в js лезть?
Код плагина
сделал плагин на минимальную стоимость заказа — но как об этом уведомить на клиентской стороне покупателя, можно ли прям из плагина послать сообщение во всплывашку, идущую вместе с miniShop2?
Может метод есть какой-то? или надо в js лезть?
Код плагина
if ($modx->event->name == 'msOnSubmitOrder'){
if($cart = $order->ms2->cart->status()) {
if($cart['total_cost'] < 1500) {
$modx->event->output('Сумма вашего заказа должна превышать 1500 руб!');
}
}
}
easyAuth [1.0.0-beta]
Добавление своих полей в форму заказа [обновлено]
При разработке нескольких проектов, возникала необходимость в получении дополнительных данных от покупателей, а полей в miniShop2 ограниченное количество. Поиск готового решения результата не дал, поэтому предлагаю свой вариант.
Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей
Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.
Более подробно далее
Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей
Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.
Более подробно далее