заметки про zabbix
zer0wayИногда на тестах есть доступ к заббиксу с ограниченными правами, я покажу некоторые интересные вещи на примере заббикса на standoff365.
У нас есть доступ к заббиксу с ограниченными правами, доступен только один хост, как на скрине:
В самом заббиксе на мониторинге намного больше хостов, в моем случае 61
Часть 1
В данной лабе, как и в жизни. мы можем выполнять команды ОС через items c key system.run[команда] при условии что выполнение разрешено в конфиге zabbix клиента
1 хост это конечно хорошо....но мы можем отправлять команды абсолютно на любой zabbix агент, просто указав его ip адрес в "host address".
Я отправил через burp на проверку /24 подсеть с командой whoami и получил следующий результат:
Команды выполнять на любых заббикс агентах, которые мониторятся в данном заббиксе но не доступны нам из gui мы смогли.
Но что делать если выполнение команд запрещено?
Часть 2
Читаем мануалы zabbix - https://www.zabbix.com/documentation/current/ua/manual/config/items/itemtypes/zabbix_agent
Наблюдаем прекрасный Key - vfs.file.contents позволяющий читать содержимое файлов. Так как на windows os зачастую zabbix agent работает с правами system, то читать мы можем много и очень много.
Например, историю powershell команд администратора на контроллере домена:
К тому же, в качестве пути можно указать путь к своему smb серверу и получить NTLM сессию устройства
Окей, прочитали файлы, возможно ничего не нашли интересного..
Часть 3
опять таки читаем мануалы zabbix и видим интересный ключ wmi.getall. Данный ключ позволяет выполнять wmi запросы к устройству....
например: wmi.getall[root\cimv2,"SELECT * FROM WIN32_GroupUser"]
где root\cimv2 неймспейс и в ковычках сам запрос.
Некоторые запросы позволяют обойти другие ограничения безопасности zabbix агентов. Некоторые примеры запросов:
- получить список запущенных процессов - wmi.getall[root\cimv2,"Select * From Win32_Process"]
- получить список сервисов - wmi.getall[root\cimv2,"Select * From Win32_Service"]
- получить список пользователей - wmi.getall[root\cimv2,"SELECT * FROM Win32_UserAccount"]
- получить список файлов в каталоге - wmi.getall[root\cimv2,"SELECT * from Cim_DataFile where path = \"\\Users\\administrator\\\" and Drive=\"C:\""]
- получить список каталогов - wmi.getall[root\cimv2,"SELECT * from Win32_Directory where path = \"\\Users\\administrator\\\" and Drive=\"C:\""]
Часть 4
Если у вас нет доступа к заббиксу, но есть предположение что где то NAT и в конфиге пассивного zabbix агента может быть указан адрес того самого NATа..можно попробовать поотправлять запросы напрямую через утилиту zabbix_get:
zabbix_get -s ip_адрес -p 10050 -k agent.ping
и если вам повезет, то вы сможете отправлять запросы напрямую
P.S.
Ключей очень много и возможностей для активной разведки тоже, zabbix прекрасный для этого инструмент.