ソース:
脆弱性:XXE
訳:
この発見は、別の非公開のバグ報奨金プログラムでした。
ターゲットの範囲は、チケット発行 Android アプリ (製品) でした。
このアプリは、ドイツを拠点とする大手公共交通機関のチケット販売アプリでした。
次の画面では、個人データを変更する必要があります
データを保存しているときに、次のリクエストがサーバーに送信されていることがわかりました。
リクエストの形式は次のようなものでした 062.6.26#{some long data}
。
次に、{長いデータ} を選択してデコーダに送信しました。
デコードしてみたところ、base64であることがわかりました。
デコードされたデータは、以下の図に示すような XML でした。
次に、次の XXE ペイロードを含めました。
<?xml version="1.0"coding="UTF-8"?><!DOCTYPE aa[<!ELEMENT bb ANY><!ENTITY xxe SYSTEM "file:///etc/passwd">]>
そして定義されたエンティティを呼び出します &xxe;
次の図に示すように本体から。
ここで必要なのは、ペイロード全体をエンコードして Base64 形式に戻すことだけです。
最後に、元のリクエストのペイロードを置き換えて、リクエストをサーバーに転送しました。
そして、の内容を入手しました /etc/passwd
アプリケーションは Java を使用しているため、次のペイロードを使用してディレクトリを一覧表示することもできます。
<?xml version="1.0"coding="UTF-8"?><!DOCTYPE aa[<!ELEMENT bb ANY><!ENTITY xxe SYSTEM "file://">]>