Константин Обухов

Константин Обухов

С нами с 03 марта 2016; Место в рейтинге пользователей: #333

Срочные исправления безопасности в MODX 2.5.2

Привет, друзья! У меня для вас отличная новость!

Команда MODX работала всю ночь не покладая рук, чтобы подготовить для нас срочный выпуск MODX 2.5.2, закрывающий все известные на сегодня уязвимости.
  • Скрыты критичные системные настройки [#13170]
  • Запрет возможности локального подключения файлов (LFE) [#13177]
  • Запрет возможности подмены пути при запуске $modx->runProcessor [#13176]
  • Запрет неавторизованного доступа к процессорам [#13175]
  • Запрет подмены пути в параметре action объекта modConnectorResponse [#13173]
  • Запрет слепой SQL инъекции при получении xPDOObject [подробности]
Василий Наумкин
15 ноября 2016, 03:19
modx.pro
1
8 913
+24

modMonitor. Кейс: поиск причины сброса кеша

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

Предыстория: клиент пишет, что показатели сайта в тестах гугла PageSpeed Insights низкие. Полез проверять. Обратил внимание, что гугл жалуется на долгий ответ от сервера (1.3 сек). Я удивился, так как перед тестом специально захожу на главную страницу, чтобы она закешировалась. Но нет, с каждым тестом как минимум на одной из версий (мобильной и обычной) долгий ответ. Здесь еще тонкость в том, что на сайте реализована отдельно мобильная версия и кеш у них раздельный. Полез опять в админку, проверяю настройки кеша где можно — везде все ОК. При этом проверяю кеш-файлы — а они постоянно сбрасываются, то есть для двух-трех документов они создаются, а потом сбрасываются.
Fi1osof
15 ноября 2016, 02:08
modx.pro
1
2 004
+8

Потенциальная уязвимость при получении объекта 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 выражений.
Василий Наумкин
13 ноября 2016, 15:37
modx.pro
11
4 886
+30

modMonitor 2+

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

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

Fi1osof
13 ноября 2016, 12:51
modx.pro
3
5 669
+14

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

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

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

P.S. И еще заповедь: не пускайте никого в админку, даже с самыми минимальными правами. Это практически 100% гарантия взлома при желании.
Fi1osof
05 ноября 2016, 07:50
modx.pro
17
39 928
+30

Минутка грамотности

Честно говоря, я вовсе не мастер русского языка, в школе перебивался с тройки на четвёрку. Но то, что я вижу в наших комментариях, просто приводит в уныние.

Давайте постараемся писать хоть немного грамотнее, всего несколько пунктов.

1. Самое наболевшее: тся\ться. Настолько всем надоело, что даже запустили отдельный сайт.
Ь ставится:

— В неопределённой форме глагола (инфинитиве): умывать(ся), беречь(ся).
— В окончании 2-го лица единственного числа настоящего или будущего времени: умываешь(ся), бережёшь(ся).
— После согласных (кроме «й» и «г» – ляг(те)) в формах повелительного наклонения: исправь(те).
— В возвратной частице (суффиксе), стоящей после гласного звука: вернусь, вернитесь, вернулись, вернувшись.

В остальных случаях в глагольных окончаниях ь не ставится: он пошёл умываться, но: он умывается
Василий Наумкин
31 октября 2016, 07:47
modx.pro
2
3 162
+23

Выборка пользователей по определенным параметрам

Здравствуйте.
Нужно получить выборку активных (не забаненых и т.д.) пользователей, со всеми их полями, принадлежащих группе с 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
Спасибо заранее!
Ivan
26 октября 2016, 18:04
modx.pro
3
3 645
0

Можно ли из плагина вызвать уведомление?

Добрый вечер, всем, кто нибудь подскажите —
сделал плагин на минимальную стоимость заказа — но как об этом уведомить на клиентской стороне покупателя, можно ли прям из плагина послать сообщение во всплывашку, идущую вместе с miniShop2?
Может метод есть какой-то? или надо в js лезть?
Код плагина
if ($modx->event->name == 'msOnSubmitOrder'){
        if($cart = $order->ms2->cart->status()) {
            if($cart['total_cost'] < 1500) {
                $modx->event->output('Сумма вашего заказа должна превышать 1500 руб!');
            } 
        }
}
Семён Кудрявцев
18 октября 2016, 14:54
modx.pro
7
3 455
0

easyAuth [1.0.0-beta]

Приветствую, наше уважаемое сообщество.
Начал разгребать завалы старых разработок и откопал интересный компонент для авторизации пользователей.
Компонент дает возможность авторизации по открытым паролям (кодам доступа), которые создаются администратором.

Лев Вербицкий
17 октября 2016, 10:35
modx.pro
14
3 580
+21

Добавление своих полей в форму заказа [обновлено]

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

Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей

Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.

Более подробно далее
Дмитрий Меркурьев
11 октября 2016, 16:38
modx.pro
97
19 973
+11