
脆弱性をテストするには、管理者(オーナー)の役割を持つアカウントと、寄稿者の役割を持つアカウントの2つが必要です。Ghost CMSでは、まず管理パネルにアクセスしてオーナーアカウントを作成し、次にそのアカウントから寄稿者を招待して、寄稿者が自分のアカウントを作成できるようにする必要があります。しかしGhostでは、寄稿者を招待する唯一の方法は、招待リンクをメールで送信することです。そのため、寄稿者のアカウントにメールを送信するためのメール配信サービスが必要になります。作業を簡単にするため、Mailgunアカウントを作成し、Ghostに寄稿者を追加し、その時点の状態のデータベースダンプファイルを作成しました。私たちのDocker Compose構成では、Ghostを起動する前にまずダンプからデータベースを復元するようにしているため、この脆弱性をテストするためにメール配信サービスは必要ありません。ただし、クリーンインストールから始めたい場合や、提供されたデータベースダンプを使用したくない場合は、manual-setup フォルダー内のDocker Composeを使用して、クリーンなGhostインストールを起動できます。以下に、Mailgun(私たちが使用したメール配信サービス)を設定してGhostで動作させる手順を示します。
このインストールでログインに使用する管理者と寄稿者の認証情報は次のとおりです:
最初に、Mailgunアカウントを作成する必要があります。アカウントを作成したら、SMTP認証情報を取得します。認証情報を取得したら、config.example.json に示されているのと同じ形式で、config.development.json ファイルにそれらを記入します。
以下はステップバイステップのガイドです:
config.example.json を複製し、config.development.json に名前を変更します。config.development.json ファイルにSMTP認証情報を記入します。これにより、Mailgunを介してメールを送信するための開発環境が正しく構成されます。選択したインストールは、次のコマンドで起動できます:
docker-compose up
攻撃をテストするには、次の手順に従ってください:
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
自動インストールの場合のコマンドは次のとおりです:
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
このコマンドは、カレントディレクトリに tenant-takeover.svg という名前の悪意のあるSVGファイルを生成します。
作成した寄稿者アカウントの認証情報を使用して、Ghostの管理インターフェースにログインします。そのためには、http://localhost:3001/ghost にアクセスし、寄稿者アカウントの認証情報でログインします。
画面左下のプロフィール写真をクリックし、次に「Your profile」ボタンをクリックして、プロフィール編集ページにアクセスします。
プロフィール写真を変更するには、プロフィールアイコンをクリックします。手順1で生成した悪意のあるSVGファイルを選択します。
「Save & close」ボタンをクリックして変更を保存します。ページを更新すると、プロフィール写真が変更されたことを確認できます。
次に、寄稿者アカウントからログアウトし、管理者アカウントにログインします。http://localhost:3001/ghost/#/settings/staff?tab=contributors で、寄稿者のプロフィール写真が変更されていることを確認できます。プロフィール写真を右クリックして、画像を新しいタブで開くと、攻撃がトリガーされます。その後、http://localhost:3001/ghost/#/settings/staff に戻ると、寄稿者がブログのオーナーになり、あなたが管理者になっていることを確認できます。
CVEを実装するために必要な全プロセスと手順を詳しく説明したビデオを作成しました。このビデオは、私たちのアプローチと実行したアクションをより深く理解するための視覚的なガイドとして役立ちます。
ビデオへのリンク: ビデオを見るにはここをクリック
プロジェクト全体と実施した技術的手順の完全な概要については、ぜひこのビデオをご覧ください。