
ZabbixのSQLインジェクション(CVE-2024-42327)を悪用して管理者セッションを抽出し、API経由でコマンドを実行してリバースシェルを獲得します。
_______ ________ ___ ____ ___ __ __ __ __ ___ ________ _____
/ ____/ | / / ____/ |__ \ / __ \__ \/ // / / // /|__ \|__ /__ \/__ /
/ / | | / / __/________/ // / / /_/ / // /_______/ // /___/ / /_ <__/ / / /
/ /___ | |/ / /__/_____/ __// /_/ / __/__ __/_____/__ __/ __/___/ / __/ / /
\____/ |___/_____/ /____/\____/____/ /_/ /_/ /____/____/____/ /_/
NSFOCUS CERTは、Zabbixがセキュリティアナウンスを公開し、ZabbixサーバーのSQLインジェクション脆弱性(CVE-2024-42327)を修正したことを検出しました。addRelatedObjects関数内のCUserクラスのSQLi脆弱性により、デフォルトのユーザー権限またはAPIアクセスを持つ攻撃者はCUser.get関数を呼び出すことができます。これにより、機密情報への不正アクセスや任意のSQL文の実行が引き起こされる可能性があります。CVSSスコアは9.9です。
このPoCはこのSQLインジェクションの脆弱性を悪用します。時間ベースのSQLインジェクション手法では、データベースからsessionsテーブルを抽出して、Adminユーザーがログインしているかどうかを判断する必要があります。このスクリプトは、さらなる悪用のためにadminセッションの抽出を迅速化するマルチスレッドスクリプトを提供します。adminユーザーのAPIトークンを使用して、アイテムを作成し、そのアイテムをトリガーすることができます。その後、ペイロードを送信してリバースシェルを取得します。
要約すると、このツールはZabbix APIを使用した時間ベースのSQLインジェクションでadminセッションID(admin_session)を抽出し、このIDを使用してターゲットシステムにリバースシェルコマンドを送信します。まず、スクリプトはユーザーの認証情報を受け取り、Zabbix APIに認証リクエストを送信してauth_tokenを受け取ります。次に、SQLインジェクションを使用してadmin_session IDを抽出します。抽出されたadmin_session IDは、Zabbix APIへのhost.getリクエストでホストIDとインターフェースIDを取得するために使用されます。最後に、リバースシェルコマンドを含むitem.createリクエストが、取得したホストIDとインターフェースIDとともに送信されます。このようにして、ターゲットサーバー上でリバースシェルが開かれ、接続が確立されます。
