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>
ファイル内容が表示された。
まあここで詰まったんですがね。