academy ファイルアップロード 3問目 パストラバーサルによるWebシェルのアップロード

WEBセキュリティー

Web shell upload via path traversal

wienerでログイン

アバター画像をアップして、My accountに

ヒストリーで、
GET /files/avatars/xx.jpg
を確認

*表示されない場合は、フィルターで、imageにチェック

このリクエストをリピータに

以下のファイルを作ります exploit.php

このファイルをアバターのアップ画面よりアップします。

*一見アップできたようにみえます。

GET /files/avatars/exploit.php
リクエストをリピータに

sendして、レスポンスをみると、
phpファイルをそのまま出力してます。

ヒストリーで、POST /my-account/avatar
を探し、リピータに

Content-Disposition: form-data; name=”avatar”; filename=”exploit.php”
の行を探し、
パストラバーサルのシーケンスを加え、
Content-Disposition: form-data; name=”avatar”; filename=”../exploit.php”
に書き換え、sendします

The file avatars/exploit.php has been uploaded
のレスポンスが返ります

これは、サーバーで、パストラバーサルのシーケンスを削除しているようです

/ をURLエンコードすると、%2f になります

Content-Disposition: form-data; name=”avatar”; filename=”..%2fexploit.php”
に変えて
sendします

レスポンスに
The file avatars/../exploit.php has been uploaded
がついてます
../部分が削除されず通ったようです

ブラウザで一度、My accountにアクセスし、ヒストリーに戻ります

GET /files/avatars/..%2fexploit.php
をリピータに渡し、sendします

404が返ってしまいます。
リクエスト時は、%2fのエンコードが邪魔するようです。

リクエストの %2f を / に変えて、sendします

アップしたphpが実行され、
/home/carlos/secretの中身を表示しているようです

submit solutionより入力して、クリア!

–)v

コメント

タイトルとURLをコピーしました