
このリポジトリでは、docker compose を使用した CVE-2021-46398 脆弱性の悪用の概念実証と、この脆弱性が情報システムに与える影響の分析を提供します。
# Exploit Title: FileBrowser 2.17.2 - Cross Site Request Forgery (CSRF) to Remote Code Execution (RCE)
# Date: 05/02/2022
# Exploit Author: FEBIN MON SAJI
# Vendor Homepage: https://filebrowser.org/
# Software Link: https://github.com/filebrowser/filebrowser
# Version:
FileBrowser <= 2.17.2
# Tested on: Ubuntu 20.04
# CVE : CVE-2021-46398
FileBrowserのウェブサイト によると、FileBrowser は人気のある「自分でクラウドを作る」タイプのソフトウェアで、サーバーにインストールし、パスを指定すると、Go 言語で開発された優れた Web インターフェースを通じてファイルにアクセスできるようになります。 多くの機能 を備えています。Google ドライブに似ていますが、誰でも自分のインスタンスを所有しホストできる点が異なります。
FileBrowser の管理者は、複数のユーザー(管理者権限を持つ別のユーザーも含む)を作成し、任意のディレクトリへのアクセスを許可できます。ユーザー作成はエンドポイント /api/users で処理されます。このエンドポイントはユーザー作成のために JSON 形式の入力を受け付けますが、値が application/json であるべき ヘッダーの を検証せず、 も受け入れてしまいます。これが脆弱性の原因です。また、 の検証もなく、 トークンも実装されていません。そのため、攻撃者はこの脆弱性を簡単に悪用して、管理者権限と攻撃者がアクセスしたい任意のディレクトリ(ホームディレクトリなど)へのアクセス権を持つバックドアユーザーを作成できます。これは、悪意のある Web ページの URL を正規の管理者に送信し、サーバーのファイルシステム全体にアクセスさせるだけで実現します(このプロセスの詳細な説明はデモセクションにあります)。
Content-Typetext/plainOriginさらに、管理者はシステム上でコマンドを実行できるため、この脆弱性は RCE につながります。
以下は攻撃プロセスを要約したシーケンス図です(アリスはハッカー、ボブは FileBrowser インスタンスの管理者兼ホスト)。
sequenceDiagram
Alice (hacker) ->> Alice (hacker): *悪意のある HTML ページを悪意を持って作成*
Alice (hacker) ->> Bob (admin): ここにクールなページがあるよ! チェックしてみて!
Bob (admin) ->> Alice (hacker): サンキュー、開いてみるよ!
Bob (admin) ->> Bob (admin): *クールなものだと思ってページを開く*
Bob (admin) -->> FileBrowser: *気づかずにユーザー作成リクエストを送信*
FileBrowser -->> FileBrowser: *要求された通り、新しい管理者権限ユーザーを作成*
Alice (hacker) ->> FileBrowser: えへへ、ボブはバカだな! *バックドアユーザーで FileBrowser に接続*
FileBrowser ->> Alice (hacker): *作成された新しいユーザーでアリスの接続を受け入れる*
Alice (hacker) ->> FileBrowser: 適切なボタンで FileBrowser へのシェルアクセスを要求し、ボブのコンピュータでシステムコールを実行*このデモの目的は、2~3 台のマシンからなるミニアーキテクチャを構築することです:
これは非常に単純化されたアーキテクチャであり、脆弱性の技術的側面を強調することを目的としています。
この実験には、docker のみが必要です。
この設定では、ターゲットマシンは FileBrowser v2.17.2 イメージ(この脆弱性の影響を受ける)に基づいており、FileBrowser の唯一のアカウントは、ログイン/パスワードが admin/admin の管理者アカウントです。
ターゲットマシンの起動:
mkdir srv && docker compose up
攻撃者側では、悪意のある Web ページを使用して FileBrowser API 呼び出しを実行し、管理者のコンピュータからバックドアユーザーを作成します。
そのようなページの例は、このリポジトリに index.html という名前で提供されています。これは、入力名にペイロードを付けて /api/users FileBrowser エンドポイントに POST リクエストを実行する隠しフォームを持つシンプルな HTML ページです。このペイロードは、ログインが "oui"、パスワードが "oui" の管理者権限ユーザーを作成し、ボタンがクリックされるとトリガーされます。
もちろん、このページよりももっと魅力的で魅力的なページを作成し、HTTP リクエストの送信を Web サイトの別の要素に隠すこともできました。これは、脆弱性の悪用の技術的側面をご覧いただくためのものです。この悪意のある Web ページの目的は、FileBrowser の管理者が疑うことなく開くことであることを忘れないでください。
管理者側では、FileBrowser で静かに管理作業を行っています。127.0.0.1:8080 にアクセスし、管理者認証情報 admin/admin でログインします。
次に、フィッシングメールなど何らかの手段で悪意のある Web ページを受け取り、エクスプロイトをトリガーするアクションを実行します。index.html Web ページを開き、ボタンをクリックします。これによりペイロードが起動します。
ここで、攻撃者側に戻ると、FileBrowser サーバー上に管理者権限を持つバックドアユーザーが作成されています。
プライベートブラウジングでお好みの Web ブラウザを開き、管理者の認証手段を使用していないことを確認します。localhost:8080 にアクセスし、バックドアユーザーの認証情報 oui/oui でログインします。
おめでとうございます! FileBrowser サーバーのファイルシステムにアクセスできるようになり、サーバーの全ユーザーのファイルにアクセスできるようになりました!
また、FileBrowser は多くの機能を備えた優れたプラットフォームであるため、"toggle shell" ボタンを押すとターミナルインスタンスを起動できます。whoami と入力してみて、root として好きなことをしてください :)
バックドアユーザーがシェルコマンドを使用できるようにするには、ペイロードで明示的に宣言する必要があります。独自のものを追加するには
index.htmlを参照してください。
この脆弱性は v2.18.0 以降で修正されました。詳細は 彼らの GitHub で確認できます。修正の展開は非常にコストがかからず、単一のプログラムファイルの 6 行のコードを変更するだけで済みました。脆弱性はパーシングの失敗に起因していたため(脆弱性の説明 参照)、他の処理の前にすべてのリクエストが application/json 形式にパースされることを保証するだけで十分でした。
この作業は、グルノーブル INP - Ensimag, UGA の情報システム工学専門の最終学年で開講された情報システムセキュリティコースの一環として行われました。