WebGoat-9: Path traversal

../はURLエンコーディングにおいては%2e%2e%2fとなる。

Page 2

ファイルのアップロード中にパス・トラバーサルの脆弱性を見つけよ、という問題。
試しにデフォルトの状態でアップロードしてみる。

a

プロファイル画像は/home/webgoat/.webgoat-8.1.0/PathTraversal/aaaaaa/testディレクトリに保存されたようだ。

a

Full Nameフィールドをhogeに変えてみる。

a

/home/webgoat/.webgoat-8.1.0/PathTraversal/aaaaaa/hogeディレクトリに保存された。Full Nameフィールドに入力された文字列からディレクトリを作成している、あるいはパス参照しているのかもしれない。
ここでユーザ名を../hogeにしてみる。

a

問題クリアしたようだ。

a

Page 3

Page 2の問題とは異なり、ユーザ名の入力フォームには../と入力してもサーバ側で除去される。
../../../を入力してみたらName is emptyと表示されるので、../を機械的に除去しているものと思われる。
ここで....//testと入力してみる。../を除去するアルゴリズムが単純なものなら、真ん中の../が除去された結果、../が残って最終的に../testとなるはずである。
と思ったらやっぱりそうだった。

a

Page 4

Full Nameフィールドに入力した文字列でパス参照するのではなく、WebGoatにログインしているユーザ名ディレクトリの直下にプロファイル画像を保存するようになった。
/home/webgoat/.webgoat-8.1.0/PathTraversal/aaaaaa/a.jpgという具合に。

a

ということはHTTPリクエストでファイル名をパラメータとして送信している部分をいじくればよさそうだ。
OWASP ZAPでPOSTリクエストをブレークするよう設定し、リクエスト・ボディのfilenameパラメータを../a.jpgとすることで問題クリア。

a

Page 5

わからん。