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
コメント