WebGoat-15: XXE

XXE (Xml eXternal Entity attack) とは、XMLの外部参照機能を悪用する攻撃。

Page 4

XXEインジェクションを用いてサーバのrootディレクトリ内をリスト表示せよ、という課題。
適当にhogeとコメントしてみる。

a

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

a

リクエスト・ボディがXML形式なので、ここにXXEインジェクションを活用できそうだ。
<text>タグに入力したコメントが挿入されて画面表示されるので、XXEインジェクションは以下のようになる。

<?xml version="1.0"?><!DOCTYPE xxe [<!ENTITY root SYSTEM "file:///"> ]><comment>  <text>&root;</text></comment> 

owasp zapでコメント投稿をブレークさせ、上記のxmlをリクエスト・ボディに貼っつけて送信。

a

課題クリア。

a

Page 7

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

a

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

a

サーバで用いられているフレームワークによっては意図しない形式のデータを処理するかもしれない、という教訓。

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>

a

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

a

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