Новости Joomla

‼️👩‍💻 Релиз безопасности Astroid 3.3.11 - шаблона-конструктора для Joomla.

‼️👩‍💻 Релиз безопасности Astroid 3.3.11 - шаблона-конструктора для Joomla.

14 часов назад (на момент публикации заметки) была обнаружена уязвимость в популярном шаблоне-конструкторе Astroid Framework. При атаке на сайт устанавливается бэкдор — системный плагин под названием plg_system_blpayload. Если вы обнаружили этот плагин на своем веб-сайте, значит, он скомпрометирован, и вам необходимо восстановить чистую резервную копию, созданную до установки плагина.

Уязвимость позволяет загружать файлы на сайт и в дальнейшем получить права администратора Joomla.
В рамках атаки (из-за которой и была обнаружена уязвимость) на сайт устанавливался плагин plg_system_blpayload, который при каждой загрузке страницы снаружи он скрытно связывается с (платформой для SEO, работающей на черном рынке (ссылку помещать не будем, просим поверить на слово). Получает список скрытых спам-ссылок (сайты азартных игр, фишинга, мошенничества), подобранный под ваш домен, затем внедряет эти ссылки в HTML-код вашей страницы непосредственно перед рендером - невидимые для посетителей, но полностью читаемые поисковыми роботами. Это называется "отравление SEO" ("отрпавление поисковой выдачи").

Однако, эта уязвимость может использоваться в других целях. Поэтому необходимо срочно проверить ваши сайты, где стоит Astroid Framework и обновить его до версии не ниже 3.3.11. Релиз безопасности выпущен 4 часа назад (на момент написания заметки).

Скачать релиз безопасности Astroid

@joomlafeed

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

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Здравствуйте, помогите допилить плагин. Необходимо после регистрации нового пользователя отправить данные на другой сайт по апи.

Собственно файлик

Цитировать
<?php defined( '_JEXEC' ) or die( 'Restricted access' );
//получаем данные нового пользователя
if($isNew){
   $user = JFactory::getUser();
        $first_name = $user->name;
   $email_address = $user->email;
   $phone = $user->phone;

   //отправляем данные
$request = '
&first_name="$first_name"
&email_address="$email_address"
&phone="$phone"
$url = 'http://site.ru/api/';
$sendSpot($url, $request);
   }

function sendSpot($url, $data) {
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_URL, $url);
             curl_setopt($ch, CURLOPT_FAILONERROR, 1);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
             curl_setopt($ch, CURLOPT_TIMEOUT, 7);
             curl_setopt($ch, CURLOPT_POST, 1);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

             $result = curl_exec($ch);

             curl_close($ch);

             return $result;
            }
« Последнее редактирование: 06.10.2016, 14:51:06 от makslm »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #1 : 04.10.2016, 11:09:23 »
Так а в чем конкретно помочь? Откуда мы знаем, что там за API, в каком формате они принимают данные.
Да и пароль вы собрались в открытом виде передавать или в виде хеша (что для стороннего сайта будет бессмысленно)?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #2 : 04.10.2016, 11:16:16 »
/api?key=[your_key]&first_name=ttt&last_name=dd&email_address=daacsda@dsaa.com
данные передаются в таком виде, нужно выполнить такой запрос и данные запишутся.. необходима отправка только серверно, что б не видно было в адресной строке
« Последнее редактирование: 06.10.2016, 14:51:44 от makslm »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #3 : 04.10.2016, 11:19:18 »
Я бы сделал переход по сформированной ссылке с указанными параметрами через AJAX в момент выполнения скрипта
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #4 : 04.10.2016, 11:21:54 »
Я бы сделал переход по сформированной ссылке с указанными параметрами через AJAX в момент выполнения скрипта
это будет на стороне клиента, и он должен остатся на сайте, а данные уйти
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #5 : 04.10.2016, 11:46:16 »
это будет на стороне клиента, и он должен остатся на сайте, а данные уйти
ну так я про то и говорю, запрос уйдет, мы остаемся на сайте клиента, еще если тот сайт дает ответ на полученные данные можно сказать клиенту о результатах обработки
Код: javascript
$.ajax({
        type: 'POST',
        url: 'http://site.com/back.php/affiliate/externalSorce/api?key=[your_key]&method=createLead&first_name=ttt&last_name=dd&email_address=daacsda@dsaa.com',
        data: '',
        cache: false,
        success: function(response){
          alert(response);
        }
});
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании модуля
« Ответ #6 : 04.10.2016, 12:06:55 »
А причем тут вообще модуль? если тут плагин нужен. Что такое $isNew
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #7 : 04.10.2016, 12:09:33 »
ну так я про то и говорю, запрос уйдет, мы остаемся на сайте клиента, еще если тот сайт дает ответ на полученные данные можно сказать клиенту о результатах обработки
Код: javascript
$.ajax({
        type: 'POST',
        url: 'http://site.com/back.php/affiliate/externalSorce/api?key=[your_key]&method=createLead&first_name=ttt&last_name=dd&email_address=daacsda@dsaa.com',
        data: '',
        cache: false,
        success: function(response){
          alert(response);
        }
});

по идеи подходит, а как скрыть ключ что б скрипте не видно было?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Нужна помощь в написании модуля
« Ответ #8 : 04.10.2016, 12:21:52 »
а как скрыть ключ что б скрипте не видно было?
в данном случае никак
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании модуля
« Ответ #9 : 04.10.2016, 12:30:51 »
А причем тут вообще модуль? если тут плагин нужен. Что такое $isNew
верно подметили.. смешал все в кучу, необходим плагин..

function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){$user = JFactory::getUser();
   $first_name = $user->name;
   $email_address = $user->email;
   $phone = $user->phone;}
}
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании плагина
« Ответ #10 : 04.10.2016, 13:53:08 »
Если мне память не из
верно подметили.. смешал все в кучу, необходим плагин..

function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){$user = JFactory::getUser();
   $first_name = $user->name;
   $email_address = $user->email;
   $phone = $user->phone;}
}
В первых в плагине $user = JFactory::getUser(); вы получие юзера которых сохранял, а учитывая isNew Получитите либо админа либо гостя. Далее стандартная функция выглядит так
Код: php
public function onUserAfterSave($user, $isnew, $success, $msg)
А данные пользователя получаться так
Код: php
   $first_name = $user['name'];
   $email_address = $user['email'];
насчет телефона хз.
Далее помино "проверки" isNew проверяйте  $success

Теперь работа с api
Во превых дайте ссылку на документацию api ни кто тут от вас не просит писать на форуме секретный ключ.
Во вторых у всех человеческих сервисов с api есть примеры реализации на php.
В третьих.
У любого сервиса есть защиты от спама, лимит и т.д. Поэтому вам надо исключить запросы к api от ботов (можете считать что ваш сайт мега защищен от реги ботов, но все равно доп. проверка не помешает). Как вариант завести таблицу где будут хранится email или другой идентификатор уже отправленных данных. К примеру если вы удалите юзера, то email можно использовать повторно, а если хранить в данные в топ таблице, хоть она прибавит веса, но зато будет защита и сервис вас не заблокирует. Про подобные защиты пишут все сервисы и сайты предоставляющие апи. Ваша обязанность контролировать сколько и какие запросы вы отправляете.
Закончили с проверкой переходим к отправке.
Материалов по данной теме тьма, пользуйтесь поиском. Зависит от того что вы получить к примеру можно использовать file_get_contents() а для формирования параметров запроса http_build_query()

Это максимум чем можно помочь. Если только не писать весь код за вас.

P.S судя знаний php у вас явно маловато *(без обид). Обратитесь в коммерческий раздел или хотя бы возьмите за основу тот же дефолтный contactcreator
« Последнее редактирование: 04.10.2016, 14:16:13 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #11 : 05.10.2016, 14:35:06 »
Цитировать
<?php
defined('_JEXEC') or die;
class PlgUserNewLead extends JPlugin
{
   protected $autoloadLanguage = true;
   public function onUserAfterSave($user, $isnew, $success, $msg)
   {
      if (!$success)
      {
         return false;
      }
      if (!$isnew)
      {
         return false;
      }
      $user_id = (int) $user['id'];
      if (empty($user_id))
      {
         return false;
      }
      if ($isNew) {
         $first_name = $user['username']
         $email_address = $user['email'];
         }
         
      if( $curl = curl_init() ) {
      curl_setopt($curl, CURLOPT_URL, 'http://site.ru/api?key=xxx&method=createLead&first_name='$first_name'&last_name=last_name&email_address='$email_address');
      $out = curl_exec($curl);
      echo $out;
      curl_close($curl);
   }
Должно работать?  !
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании плагина
« Ответ #12 : 05.10.2016, 14:40:39 »
Должно работать?  !
В логике промхнулся.  if ($isNew) надо не на данные пользователя, а на отправку
« Последнее редактирование: 05.10.2016, 14:58:41 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #13 : 06.10.2016, 09:56:08 »
Вроди как разобрался с этим, установил плагин...
....
if ($isNew) {
         $file = file_get_contents('site.ru');
   }
При получении данных с site.ru, на site.ru я это увижу..

Не работает( Его нужно дополнительно подключать в регистрации?
Если да, можно пример пожалуйста?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Нужна помощь в написании плагина
« Ответ #14 : 06.10.2016, 10:45:15 »
Вроди как разобрался с этим, установил плагин...
....
if ($isNew) {
         $file = file_get_contents('site.ru');
   }
При получении данных с site.ru, на site.ru я это увижу..

Не работает( Его нужно дополнительно подключать в регистрации?
Если да, можно пример пожалуйста?

Поймите если вы хотите чтобы вам помогли с апи то нужна ссылка на документацию этого апи. А лучше всего в коммерческий раздел
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #15 : 06.10.2016, 10:50:47 »
вопрос с апи сейчас не актуален
 $file = file_get_contents('site.ru'); работает, проверял отдельно созданным файлом..

код плагина упростил.. что б сразу отправка была при if new

я должен сам научится и понять)
*

makslm

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Нужна помощь в написании плагина
« Ответ #16 : 06.10.2016, 15:48:06 »
 ! HELP даже так не работает(
Цитировать
<?
class plgUserNewlead extends JPlugin {
function onUserAfterSave ($user, $isnew)
   {
         
      if ($isnew)
         {
      $fp = fopen("11.txt", "a");

fwrite($fp, "123123123123213"."\r\n");

fclose($fp);
         }
   }

Для теста создал файл 1.php
<?php
$fp = fopen("11.txt", "a");
fwrite($fp, "123123123123213"."\r\n");
fclose($fp);
?>
- работает, записало цифры в файл
}
« Последнее редактирование: 06.10.2016, 15:56:43 от makslm »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод отладочной информации системного плагина

Автор effrit

Ответов: 23
Просмотров: 1929
Последний ответ 02.10.2018, 10:24:46
от effrit
Объясните как работает MVC Override с помощью плагина Joomla!

Автор kens1n

Ответов: 8
Просмотров: 2196
Последний ответ 09.10.2016, 11:00:25
от robert
Нужна помощь по PHP

Автор pahtab

Ответов: 2
Просмотров: 1453
Последний ответ 26.03.2016, 08:12:43
от b2z
Продолжая тему разработки контент плагина, сорянчик))

Автор IvanTopor

Ответов: 7
Просмотров: 1307
Последний ответ 26.02.2016, 16:27:18
от b2z
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 1970
Последний ответ 26.02.2016, 13:10:37
от IvanTopor