Burp SuiteでCVE-2020-24389を検証してみた

このブログは、N高等学校とVRChatの世界からやってきた株式会社ArmorisアルバイトのShaderoが書いています。 あるもりすぶろぐの内容は個人の意見です。

今回はBurp Suiteの基本的な使い方を学習するために、非常に簡単に再現が行えるCVE-2020-24389を検証してみました。Burp Suiteを用いた検証の大まかな流れや、後述するProxy機能の便利さなどが伝われば幸いです。

Burp Suiteとは

脆弱性検証でよく使われているローカルプロキシツールです。本記事で使う無償のCommunity Edition以外に、有償のProfessionalやEnterpriseがありますが、本記事で使うProxy機能は無償版でも使えます。

検証環境

本記事は以下の環境を使用しています。

Name Version
Windows10 Pro 21H1
Burp Suite Community Edition v2021.6.2

インストール

まずはBurp Suiteをインストールします。公式サイトより「Burp Suite Community Edition」を選択し、インストーラーをダウンロードしてインストールしてください。

起動~通信履歴の観覧

Burp Suiteを起動すると、Project選択画面が表示されます。 本エディションの場合「Temporary project」しか選べないため、そのまま次に進んでください。

f:id:Armoris:20211006190023p:plain

次にBurp Suiteの設定を選択する画面が表示されます。 過去にBurp Suiteをインストールしていてコンフィグファイルをエクスポートしていた方などはここで読み込むことが出来ますが、今回は「Use Burp defaults」を選択し「Start Burp」をクリックします。

f:id:Armoris:20211006190035p:plain

Startすると以下の画面が表示されます。

f:id:Armoris:20211006190048p:plain

ツールバーの下にある「Proxy」をクリックすると以下の画面が表示されます。この画面を使って通信の改竄や通信履歴の観覧を行います。自分のブラウザにプロキシを設定してサイトにアクセスする方法もありますが、今回はBurp suiteに組み込まれているブラウザを使って通信履歴の観覧を行います。

f:id:Armoris:20211006190104p:plain

「Intercept is on」と書かれている青いボタンをクリックし「Intercept is off」にします。オンにしたままにすると通信内容の改竄が出来るのですが、ここでは改竄は行わずに通信履歴を観覧したいためオフにします。

f:id:Armoris:20211006190132p:plain

その後「Open Browser」をクリックし、立ち上がったブラウザを使って任意のWebサイトにアクセスしBurp Suiteにある「HTTP history」をクリックすると通信履歴が表示されます。ヤッタネ!(画像はGoogle.comにアクセスした際の履歴)

f:id:Armoris:20211006190147p:plain

実際にWordpressプラグイン脆弱性検証をする(CVE-2020-24389)

ここでは実際にWordpressプラグイン脆弱性を検証してみます。この脆弱性は一部のファイル拡張子が無効化されていなかったため、任意のPHPコードがアップロード出来てしまう脆弱性です。

Wordpressサーバー環境

Name Version
Ubuntu 20.04
Wordpress 5.5.1
Contact Form 7 5.2.1
Drag and Drop Multiple File Upload - Contact From 7 1.3.5.1

やってみる

今回は通信の改竄を行うので「Intercept is on」と書かれている青いボタンになっているか確認します。「on」になっていない場合はクリックしてオンにしてください。

f:id:Armoris:20211006190203p:plain

「Open Browser」をクリックし、立ち上がったブラウザで該当のWordPressのサイトにアクセスすると、Burp Suiteの方で通信を改竄する画面が表示されますが、ここは何もせず「Forward」をクリックします。

f:id:Armoris:20211006190229p:plain

該当のサイトが表示されたら任意のpngドラッグアンドドロップでアップロードします。ここで通信内容を改竄して画像ファイルではなくPHPコードをアップロードさせます。

f:id:Armoris:20211006190241p:plain

以下は実際に改竄を行うリクエストの画像

f:id:Armoris:20211006190251p:plain

jpg|jpeg|JPG|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv|xlsと書かれている所をpharに、filename="(任意の名前).png"filename="(任意の名前).phar"に、Content-Type: image/pngより下、------WebKitFormBoundary………云々より上の文字列をアップロードさせたいPHPのコード(ここではwebshellのコードを使用)に書き換えて「Forward」をクリックすると任意のPHPコードがアップロードされます。

f:id:Armoris:20211006190304p:plain

「(WordpressIPアドレス)/wp-content/uploads/wp_dndcf7_uploads/wpcf7-files/」にアクセスすると先程のPHPファイルが実際にアップロードされているのが確認できます。

f:id:Armoris:20211006190313p:plain

実際にそのPHPファイルにアクセスすると実行することも出来ました。

f:id:Armoris:20211006190322p:plain

最後に

今回初めてBurp Suiteを使ってみましたが、GUIで視覚的に分かりやすく簡単に通信の流れが確認できる上に通信内容を書き換える事が出来てとても便利でした。有償のProfessional版はこれらの無償版の機能に加えて脆弱性スキャン機能やプロジェクト保存機能などもありますが、個人で軽く使う分には無償のCommunity Editionでも問題ないと思います。Proxy機能とても便利なのでぜひ使ってみてください!