Найти в Дзене
B0rn2beR00T

Решение Vulnhub (Funbox: Easy)

Приветствую! В данной статье будет разбор простенькой машинки с Vulnhub. Я сделаю акцент на некоторых приёмах, чтобы разбор не был прям слишком примитивным. Приятного чтения! Vulnhub Funbox: Easy Итак, у нас тут есть порты 22(ssh), 80(http) и 33060(mysql). Не вижу смысла пока смотреть что-то кроме 80-го порта. Нас встречает стандартная заглушка Apache. Значит будем искать директории. Запустим dirb для поиска.
dirb http://<ip> Это дало нам понимание, где есть точка входа на сайт.
Например: вот форма авторизации для администратора /store/admin.php Смотрим далее. В robots.txt будет указана ещё одна директория, ведущая нас в кроличью нору (пустышка, которая не даст решения в будущем). Также можно найти ещё какую-то недопиленную авторизацию: Но всё же наша цель - электронный книжный магазин CSE bookstore. Сразу в глаза бросается название книжного онлайн магазина CSE Bookstore. По нему попробуем найти нужный скрипт для исследования безопасности. Готовый эксплойт с RCE-уязвимостью сразу леж
Оглавление

Приветствую! В данной статье будет разбор простенькой машинки с Vulnhub. Я сделаю акцент на некоторых приёмах, чтобы разбор не был прям слишком примитивным. Приятного чтения!

Vulnhub Funbox: Easy

Сбор информации

-2

Итак, у нас тут есть порты 22(ssh), 80(http) и 33060(mysql). Не вижу смысла пока смотреть что-то кроме 80-го порта.

-3

Нас встречает стандартная заглушка Apache. Значит будем искать директории. Запустим dirb для поиска.

dirb http://<ip>

-4

Это дало нам понимание, где есть точка входа на сайт.
Например: вот форма авторизации для администратора /store/admin.php

-5

Смотрим далее.

-6

В robots.txt будет указана ещё одна директория, ведущая нас в кроличью нору (пустышка, которая не даст решения в будущем).

-7

Также можно найти ещё какую-то недопиленную авторизацию:

-8

Но всё же наша цель - электронный книжный магазин CSE bookstore.

-9

Поиск уязвимостей

RCE (Простой вариант)

Сразу в глаза бросается название книжного онлайн магазина CSE Bookstore. По нему попробуем найти нужный скрипт для исследования безопасности. Готовый эксплойт с RCE-уязвимостью сразу лежал на exploit.db

-10

Разберём суть эксплойта для детального понимания:

Для начала скрипт принимает URL-адрес целевого веб-приложения через аргумент командной строки.

python3 script.py http://example.com

Далее он создает случайное имя для вредоносного PHP-файла, состоящее из 10 случайных букв и цифр. Это делается для того, чтобы файл было сложно обнаружить на сервере.

Вредоносный код, который будет загружен на сервер, выглядит так:
<?php echo shell_exec($_GET['cmd']); ?>

Этот код позволяет выполнять команды на сервере, передавая их через параметр cmd в URL. Например:

http://example.com/shell.php?cmd=whoami - выполнит команду whoami на сервере и вернёт результат.

Скрипт отправляет POST-запрос на целевой сервер по пути
/admin_add.php, загружая PHP-файл как будто это изображение. Запрос включает файл с вредоносным кодом и дополнительные данные, имитирующие форму загрузки.

После отправки файла скрипт проверяет, был ли он успешно загружен:

  • Для этого он отправляет GET-запрос к предполагаемому пути файла (например, /bootstrap/img/<имя_файла>.php).
  • В запросе передается тестовая команда, например: cmd=echo <имя_файла>
    Если сервер возвращает имя файла, значит файл успешно загружен, и команды выполняются.

    Если веб-шелл загружен, скрипт предлагает пользователю открыть интерактивную сессию.

    Ничего сложного в коде эксплойта не оказалось! Старый добрый питон :)

    Попробуем проэксплуатировать данную уязвимость:
-11
-12

И мы получили шелл. Отлично, но нам нужно что-то надёжнее и для этого прокинем свой обратный шелл, чтобы не быть ограниченными только шеллом эксплойта.

На сервере есть пакеты питона! Попробуем воспользоваться им для коннекта. Предварительно откроем прослушивание порта на атакующей машине (
nc -lvnp)

-13
-14

И он не сработал... Немного поковырявшись и перепробовав некоторые варианты, решил от отчаяния запустить perl. И он сработал!

-15

Теперь у нас есть нормальная оболочка для работы. Перейдя в домашнюю директорию единственного пользователя tony, найдём у него файл с паролями (Классическая наигранность CTF. Что тут поделать, машинка лёгкая). И зайти в домашнюю директорию с другой учётки (в данном случае с www на tony) при нормальной настройке прав файловой системы нельзя. Очередное упрощение задачи взлома.

-16

admin@admin.com:admin подошёл к админу на веб-странице. Нашкодить у нас тут особо не выйдет т.к. сразу выпадает ошибка SQL. Как бы я не крутил эту потенциальную уязвимость - толку немного. Разве что можно удалить товары спокойно. Ценник поставить на 0 нельзя :) Описание поменять также не удалось.

-17

Попробуем зайти по ssh:

-18

И мы успешно зашли!

SQL-инъекция и RCE (Вариант сложнее)

Этот вариант решения немного сложнее т.к. без использования эксплойта. По сути, мы повторим то, что делает тот скрипт, но ручками.

Добыть данные для авторизации можно ещё и так:

Запустим mysql для поиска инъекций и их эксплуатации.

--dump (Этот флаг указывает sqlmap на извлечение данных из базы данных)
--banch (Этот флаг заставляет sqlmap работать в автоматическом режиме, без запроса подтверждений от пользователя)

-19
-20

Утилита вытащит все таблицы БД, но самой важной для нас будет с кредами админа.

Хорошо, у нас есть админ на странице. Попробуем загрузить вместо книги на сайт ревёрс-шелл.

-21

Однако при добавлении файла у нас возникает ошибка

-22
-23

Однако если зайти по пути /bootstrap/img (подсказка была на главной странице), можно увидеть наш шелл.

-24

Запускаем шелл (просто клацаем по файлику p0wny-shell.php):

-25

Теперь можно проделать шаги по повышению привилегий.

Повышение привилегий

Посмотрим что может tony запускать от sudo.

-26

Попробуем запустить какой-нибудь из бинарников, используя сайт GTFOBins. Верным решением повысить привилегии через модуль time. Остальные модули ничего не дадут.

-27

Машинка решена!

-28

Выводы

Кейс довольно простой и поэтому на него у меня ушло около часа времени. Данный шаблон книжного магазина прям скрипит от наличия дырок в безопасности. Я находил кучу эксплойтов для него. Не все давали результат, но есть что поисследовать.

Совет: если будете вводить креды в /admin, то у вас ничего не выйдет. Копайте на /store/admin.php - это какая-то тестовая форма, которую не закрыли админы и оставили тем самым брешь в безопасности.

Я пробовал найти XSS-уязвимость, но у меня ничего не вышло. Интересно посмотреть ваши находки в комментариях :)

Спасибо за внимание!