Новости Joomla

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

7 января 2026 года греческому разработчику Тассосу Мариносу сообщили об уязвимости в системном плагине Tassos Framework, который входит в состав его расширений для Joomla.

⚠️ Проблема затрагивает следующие расширения:
- Convert Forms - конструктор форм обратной связи для Joomla
- EngageBox - конструктор всплывающих окон для Joomla
- Google Structured Data - пакет плагинов микроразметки для Joomla
- Advanced Custom Fields - пакет плагинов пользовательских полей (видео-сервисы, карты и иже с ними)
- Smile Pack - пакет расширений
- MailChimp Auto-Subscribe

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

👉 Суть уязвимости.
Уязвимость заключалась в том, как плагин Tassos Framework обрабатывал определенные AJAX-запросы через com_ajaxточку входа Joomla. При определенных условиях внутренняя функциональность фреймворка могла быть вызвана без надлежащих ограничений.

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

При определенных обстоятельствах запросы к базе данных могли быть изменены для извлечения данных из базы данных Joomla. В совокупности эти возможности потенциально могли быть использованы для повышения уровня доступа и выполнения несанкционированного кода.

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

Немедленно обновите расширения до безопасных версий (Joomla 4/5/6 | Joomla 3):
- Convert Forms - v5.1.1 / v.4.1.1
- EngageBox - v.7.1.1 / v,6,3,9
- Google Structured Data - v.6.1.1 / v.5.6.9
- Advanced Custom Fields - v.3.1.1 / v.2.8.10
- Smile Pack - v.2.1.1 / v.1.2.4.
- MailChimp Auto-Subscribe - v.5.1.1+ / v.5.0.4

Все указанные версии включают в себя релиз безопасности плагина Tassos Framework System Plugin v6.0.62.

Если у вас установлено несколько расширений Tassos, достаточно обновить только одно, чтобы применить патч. Однако всегда рекомендуется обновлять все расширения.

@joomlafeed

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

Google Summer of Code (GSoC) - программа компании Google, которая позволяет участникам программы под руководством опытных наставников писать код для организаций, занимающейся открытым исходным кодом. Joomla принимает участие в этой программе не в первый раз и в 2026 году снова включена в список GSoC. Для программы утверждается список "идей", воплотить которые должны участники под руководством наставников.

Проекты Joomla в рамках программы GSoC 2026.

Проект I: Ajax-бэкенд.
- Действия в административной панели без необходимости обновлять страницу.
- Автоматическое сохранение содержимого во время редактирования.
- Расширенный фильтр - поиск и фильтрация по пользовательским полям.

Проект II: Автоматизация рабочих процессов (workflow + task scheduler).
Joomla имеет функцию процессов и планировщика задач. Теперь эти две функции следует объединить, чтобы пользователь мог настраивать назначенные рабочие процессы таким образом, чтобы переходы выполнялись автоматически, с возможностью точного определения времени. Должна быть возможность создавать циклы или прямые запланированные рабочие процессы. Предполагается, что интерфейс должен учитывать хороший пользовательский опыт, удобство использования и современные стандарты доступности. Ожидается, что будет добавлен интерфейс для управления процессами и их расписанием на страницах категорий и материалов. Так же ожидается, что сторонние компоненты также смогут воспользоваться этим функционалом.

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

Проект IV: Обучение с подкреплением на основе отзывов переводчиков.
Joomla собирается использовать автоматический перевод документации. В каждом языке есть свои специфические слова, характерные для Joomla. Предполагается обучать языковые модели, используя обратную связь от переводчиков, чтобы постоянно улучшать качество переводов и учитывать специфические языковые особенности Joomla.

Принять участие GSoC 2026
Подробнее о проектах Joomla GSoC 2026
Чат GSoC в Mattermost (международное сообщество Joomla)

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 3144 Просмотров
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Здравствуйте, уважаемые форумчане!

Интересует вот такой вопрос, возможно ли сделать регистрацию пользователей не через компонент Joomla.

Регистрация будет производиться совсем из другой программы, реально ли только записать в БД данные о пользователе, логин, пароль, почту, чтобы пользователь смог спокойно зайти на сайт.

Как генерируется пароль в Joomla, проблемы с занесением остальных полей нет, а вот пароль занести в БД не знаю как.

Возможно ли данной функцией зашифровать и расшифровать пароль?

Код
static const Codes64[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"

public Encode64(s[])
{
new i=0,a=0,x=0,b=0,Result
  for (i=1;i<strlen(s);i++) {
    x = str_to_num(s[i])
    b = b * 256 + x
    a = a + 8
    while (a >= 6) {
      a = a - 6
      x = b / (1 << a)
      b = b % (1 << a)
      Result += Codes64[x + 1]
   }
  }
  if (a > 0) {
    x = b << (6 - a);
    Result += Codes64[x + 1];
 }
 return Result;
}

public Decode64(s[])
{
  new i=0,a=0,x=0,b=0,Result,ch[1]
  for (i = 1; i< strlen(s);i++) {
      for (new index = 0; Codes64[index]; index++)
    if (s[i]==Codes64[index]) {
    x=index-1
    break
    }
    if (x >= 0) {
      b = b * 64 + x
      a = a + 6
      if (a >= 8) {
        a = a - 8
        x = b >> a
        b = b % (1 << a)
        x = x % 256
        Result += num_to_word(x,ch,1)
     }
    }
    else exit;
}
return Result;
}
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Расскажите хотя бы как устроена генерация пароля?
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Если использовать http://joomlaforum.ru/index.php/topic,54062.0.html внесение данных в БД с использованием md5, будет работать или нет, пробую на хостинге не канает.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Если использовать http://joomlaforum.ru/index.php/topic,54062.0.html внесение данных в БД с использованием md5, будет работать или нет, пробую на хостинге не канает.
md5 у меня работал. Скрипт на php парсил данные из Xls-файла и вбивал их в БД. Код предоставить не смогу, осталось на старой работе...
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Вот нашел, что отвечает за генерацию пароля, помогите разобрать все по полочкам!

Код
	/**
* Formats a password using the current encryption.
*
* @param   string   $plaintext     The plaintext password to encrypt.
* @param   string   $salt          The salt to use to encrypt the password. []
*                                  If not present, a new salt will be
*                                  generated.
* @param   string   $encryption    The kind of pasword encryption to use.
*                                  Defaults to md5-hex.
* @param   boolean  $show_encrypt  Some password systems prepend the kind of
*                                  encryption to the crypted password ({SHA},
*                                  etc). Defaults to false.
*
* @return  string  The encrypted password.
*
* @since   11.1
*/
public static function getCryptedPassword($plaintext, $salt = '', $encryption = 'md5-hex', $show_encrypt = false)
{
// Get the salt to use.
$salt = JUserHelper::getSalt($encryption, $salt, $plaintext);

// Encrypt the password.
switch ($encryption)
{
case 'plain' :
return $plaintext;

case 'sha' :
$encrypted = base64_encode(mhash(MHASH_SHA1, $plaintext));
return ($show_encrypt)? '{SHA}'.$encrypted : $encrypted;

case 'crypt' :
case 'crypt-des' :
case 'crypt-md5' :
case 'crypt-blowfish' :
return ($show_encrypt ? '{crypt}' : '').crypt($plaintext, $salt);

case 'md5-base64' :
$encrypted = base64_encode(mhash(MHASH_MD5, $plaintext));
return ($show_encrypt)? '{MD5}'.$encrypted : $encrypted;

case 'ssha' :
$encrypted = base64_encode(mhash(MHASH_SHA1, $plaintext.$salt).$salt);
return ($show_encrypt)? '{SSHA}'.$encrypted : $encrypted;

case 'smd5' :
$encrypted = base64_encode(mhash(MHASH_MD5, $plaintext.$salt).$salt);
return ($show_encrypt)? '{SMD5}'.$encrypted : $encrypted;

case 'aprmd5' :
$length = strlen($plaintext);
$context = $plaintext.'$apr1$'.$salt;
$binary = JUserHelper::_bin(md5($plaintext.$salt.$plaintext));

for ($i = $length; $i > 0; $i -= 16) {
$context .= substr($binary, 0, ($i > 16 ? 16 : $i));
}
for ($i = $length; $i > 0; $i >>= 1) {
$context .= ($i & 1)? chr(0) : $plaintext[0];
}

$binary = JUserHelper::_bin(md5($context));

for ($i = 0; $i < 1000; $i ++) {
$new = ($i & 1)? $plaintext : substr($binary, 0, 16);
if ($i % 3) {
$new .= $salt;
}
if ($i % 7) {
$new .= $plaintext;
}
$new .= ($i & 1)? substr($binary, 0, 16) : $plaintext;
$binary = JUserHelper::_bin(md5($new));
}

$p = array ();
for ($i = 0; $i < 5; $i ++) {
$k = $i +6;
$j = $i +12;
if ($j == 16) {
$j = 5;
}
$p[] = JUserHelper::_toAPRMD5((ord($binary[$i]) << 16) | (ord($binary[$k]) << 8) | (ord($binary[$j])), 5);
}

return '$apr1$'.$salt.'$'.implode('', $p).JUserHelper::_toAPRMD5(ord($binary[11]), 3);

case 'md5-hex' :
default :
$encrypted = ($salt)? md5($plaintext.$salt) : md5($plaintext);
return ($show_encrypt)? '{MD5}'.$encrypted : $encrypted;
}
}

Я так понимаю мне нужна строчка

Код
			default :
$encrypted = ($salt)? md5($plaintext.$salt) : md5($plaintext);
return ($show_encrypt)? '{MD5}'.$encrypted : $encrypted;
*

Artemeey

  • Новичок
  • 3
  • 0 / 0
Спасибо, помог и мне разобраться.
Пароль генерируется вот такой функцией: md5($plaintext.$salt).

В БД запись выглядет слудущем образом:
XXXXXXXXXXXXXX:YYYYYYYYYYYY
Где:
XXX - md5
YYY - sault.

plaintext - то что вводится в поле пароля при авторизации.
*

AstFreelancer

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Для базы Joomla 1.5 по крайней мере работает такой код:
Код
$salt = $plaintext;
$encrypted = md5($plaintext.$salt);
$password = $encrypted.':'.$salt;
И не забываем, что кроме таблицы jos_users нужно заполнять еще jos_core_acl_aro и jos_core_acl_groups_aro_map!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как редактировать отдельную страницу Joomla 2.5?

Автор mrporter

Ответов: 0
Просмотров: 17211
Последний ответ 14.09.2023, 22:16:47
от mrporter
Joomla 2.5.28, Safari под маком и сессии session

Автор beliyadm

Ответов: 19
Просмотров: 19928
Последний ответ 29.03.2023, 12:17:19
от Sawell
Joomla 2.5.28 как скачать все файлы через панель управления

Автор Sergei41984

Ответов: 7
Просмотров: 18137
Последний ответ 27.12.2022, 23:30:38
от Sergei41984
Расширения для Joomla! 1.6 (коллекция полезных ссылок)

Автор Sulpher

Ответов: 124
Просмотров: 150080
Последний ответ 03.12.2022, 16:15:19
от besttechoff
Почему в админке Joomla 2.58 - у меня 16 админов показывает?

Автор dyalex

Ответов: 7
Просмотров: 18086
Последний ответ 27.10.2022, 19:03:45
от marksetter