WebGoat-15: XXE
XXE (Xml eXternal Entity attack) とは、XMLの外部参照機能を悪用する攻撃。
Page 4
XXEインジェクションを用いてサーバのrootディレクトリ内をリスト表示せよ、という課題。
適当にhogeとコメントしてみる。

この時のリクエストは以下のようになっている。

リクエスト・ボディがXML形式なので、ここにXXEインジェクションを活用できそうだ。
<text>タグに入力したコメントが挿入されて画面表示されるので、XXEインジェクションは以下のようになる。
<?xml version="1.0"?><!DOCTYPE xxe [<!ENTITY root SYSTEM "file:///"> ]><comment> <text>&root;</text></comment>
owasp zapでコメント投稿をブレークさせ、上記のxmlをリクエスト・ボディに貼っつけて送信。

課題クリア。

Page 7
Page 4と同じ課題だが、コメントを投稿したときのリクエスト・ボディがJSON形式になっている。

ではContent-Typeをapplication/xmlに改ざんした上でPage 4と同様のリクエスト・ボディを送信すればよいのではないか?
と思ったら正解だった。

サーバで用いられているフレームワークによっては意図しない形式のデータを処理するかもしれない、という教訓。
Page 11
WebGoatサーバ内の機密ファイルをWebWolfサーバに送信せよ、という課題。
試しにそのファイル内容を確認してみる。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ENTITY secret SYSTEM "file:///home/webgoat/.webgoat-8.1.0/XXE/secret.txt">
]>
<comment><text>&secret;</text></comment>

ファイル内容が表示された。

まあここで詰まったんですがね。