Это мой первый Write up, надеюсь будет полезным для кого-нибудь!
Описание
Получите RCE на узле smashmusic.edu.stf (10.124.1.241) посредством Unrestricted File Upload.
Для получения флага выполните скрипт /home/rceflag.
1. Первым делом брутим директории. Я использую словарь SecLists/Discovery/Web-Content/common.txt
Сортируем по длине ответа и видим интересные ссылки
2. В /uploads видим загруженные файлы.
В /secret файлы с расширением php - ссылки на страницы с последующими редиректами.
Но прежде чем произошел редирект, если перехватить запрос можно увидеть в ответе функционал. Например, в /secret/uploadMusic.php видим форму на загрузку файла
3. Подсказка 2 гласит:
Цитата:
Изучите JWT и уязвимость в его секрете:
Анализируйте содержимое cookie, чтобы найти JWT (JSON Web Token) и попытайтесь его расшифровать.
Попробуйте брутфорсить секрет JWT для получения доступа к административным функциям.
Но я слишком ленивая и решила попробовать загрузить файл без взлома JWT, а напрямую через POST ./uploadMusic.php
Имитирую загрузку файла в burp test-file.php с классическим payload-ом
Код:
Код:
Получаю
Код:
Token is invalid. Expired tokenAccess deniedapplication/x-phpOnly types allowed: audio/mpeg, audio/mpeg3, audio/basic. Max file size 8 MB. Extensions not allowed: php, cgi, pl, etc.
Пробуем с разрешенными типами (и сразу пробую двойное расширение .php.mpeg):
Файл загружен, он появился в http://10.124.1.241/uploads/
Но выполнить скрипт php не выходит, поэтому пробуем другое расширение. Есть разные варианты, например
Код:
Код:
.phtml
.pht
.phar
Пробуем - получилось через .phtml (filename="test-file.phtml")
Тестируем
Код:
/uploads/test-file.phtml?cmd=ls
и видим результат ls, значит можно пробовать запускать