Share Point Writeup - VolgaCTF 2017
Райтап посвящен веб таску Share Point за 200 очков с недавно прошедших VolgaCTF 2017.
Share Point
Look! I wrote a good service for sharing your files with your friends, enjoy)
share-point.quals.2017.volgactf.ru
Hints
1. flag's location is optimal
Look! I wrote a good service for sharing your files with your friends, enjoy)
share-point.quals.2017.volgactf.ru
Hints
1. flag's location is optimal
Начнем!
Нам предоставляется форма авторизации.
Если аккаунт существует, то высвечивается данная ошибка,
Error: wrong password
иначе автоматически создается новый аккаунт и мы наблюдаем новый интерфейс.
upload.php:
Загрузим тестовый файл text.txt
Successful upload
и посмотрим на следующую вкладку files.php:
Посмотрим на последнюю вкладку с интерфейсом подтверждения shared файла (это нам не понадобилось, но в процессе оказалось, что возможно делиться файлами с пользователями, используя Path Traversal или проще ../../index.php )
Вернемся к предыдущей вкладке files.php.
Попробуем загрузить файл .php:
Шелл загрузить нам не получается. Хотя...
Вспомним, что ссылка на загруженный файл выглядит следующим образом:
http://share-point.quals.2017.volgactf.ru/files/<login>/test.txt
Из заголовков сервера можно определить, что сайт работает на Apache 2.4.18:
На серверах Apache в директориях сайта может храниться файл .htaccess . В нем присутствует множество настроек, например ip whitelist и blacklist. Но нам интересна следующая настройка: возможность указывать, что файл определенного формата будет интерпретироваться как .php.
Создадим файл htaccess (тк файлы, начинающиеся с точки являются скрытыми и не видны в диалоговом окне загрузки в браузерах) со следующей строкой:
AddType application/x-httpd-php .cool
Далее попытаемся отослать его на сервер, предварительно включив перехват в Burp Suite и поменяв имя файла с htaccess на .htaccess:
В итоге нужно скачать какой-нибудь php webshell (я использовал wso.php), переименовать, чтобы он оканчивался на .cool и отослать на сервер.
В итоге, при переходе на ссылку загрузки файла, наш файл запустится как php скрипт, и в случае, если вы загружали wso-shell, то увидите следующее:
Мы получили шелл!
Далее дело остается за малым - найти флаг. Знаю, что многие заступорились на этом моменте.
Один из вариантов решения проблемы - консольная команда locate:
$ locate flag.txt
/opt/flag.txt
$ cat /opt/flag.txt
VolgaCTF{AnoTHer_apPro0Ach_to_file_Upl0Ad_with_PhP}
Вот и всё!
P.S. Забыл упомянуть: чтобы удостовериться, успешно ли загрузился файл .htaccess, можно было перед загрузкой перейти по пути /files/<login>/.htaccess и получить 404 ответ, а после загрузки перезагрузить страницу и получить уже 403 (значит, что файл обрабатывается, как конфиг для Apache).
- Автор: drakylar
- Комментарии: 3
- Просмотры: 3619