WebGoat-9: Path traversal
../
はURLエンコーディングにおいては%2e%2e%2f
となる。
Page 2
ファイルのアップロード中にパス・トラバーサルの脆弱性を見つけよ、という問題。
試しにデフォルトの状態でアップロードしてみる。
プロファイル画像は/home/webgoat/.webgoat-8.1.0/PathTraversal/aaaaaa/test
ディレクトリに保存されたようだ。
Full Name
フィールドをhoge
に変えてみる。
/home/webgoat/.webgoat-8.1.0/PathTraversal/aaaaaa/hoge
ディレクトリに保存された。Full Name
フィールドに入力された文字列からディレクトリを作成している、あるいはパス参照しているのかもしれない。
ここでユーザ名を../hoge
にしてみる。
問題クリアしたようだ。
Page 3
Page 2の問題とは異なり、ユーザ名の入力フォームには../
と入力してもサーバ側で除去される。
../
や../../
を入力してみたらName is empty
と表示されるので、../
を機械的に除去しているものと思われる。
ここで....//test
と入力してみる。../
を除去するアルゴリズムが単純なものなら、真ん中の../
が除去された結果、../
が残って最終的に../test
となるはずである。
と思ったらやっぱりそうだった。
Page 4
Full Name
フィールドに入力した文字列でパス参照するのではなく、WebGoatにログインしているユーザ名ディレクトリの直下にプロファイル画像を保存するようになった。
/home/webgoat/.webgoat-8.1.0/PathTraversal/aaaaaa/a.jpg
という具合に。
ということはHTTPリクエストでファイル名をパラメータとして送信している部分をいじくればよさそうだ。
OWASP ZAPでPOSTリクエストをブレークするよう設定し、リクエスト・ボディのfilename
パラメータを../a.jpg
とすることで問題クリア。
Page 5
わからん。