CSRF
Hello there, ('ω')ノ ✅ 脆弱性の本質 通常、CSRFトークンはログインセッションごとに一意であり、「このトークンはこのユーザーだけが使えるもの」である必要があります。 しかし一部のアプリでは次のような致命的な設計ミスがあります: 発行済みトークン…
Hello there, ('ω')ノ ✅ 脆弱性の概要:Double Submit Cookieとは? 一部のアプリケーションでは、CSRFトークンを次のように扱っています: 「トークンの発行・管理をサーバーでは行わず、クライアント(ブラウザ)側でCookieとリクエストパラメータ両方に同…
Hello there, ('ω')ノ 概要 このラボでは、CSRF(クロスサイトリクエストフォージェリ)トークンがセッションとは異なるクッキーに紐づいているため、CSRF攻撃が可能となる脆弱性を利用します。 目的 攻撃者が自分のCSRFトークンとそれに対応するクッキー…
Hello there, ('ω')ノ ✅ この脆弱性がさらに危険になるケース CSRFトークンがsessionとは別のCookie(例:csrfKey)に紐づいている場合、 通常は被害者のブラウザ内に攻撃者のトークンを注入できないため、バイパスは困難です。 しかし、次のような「外部か…
Hello there, ('ω')ノ ✅ 脆弱性の概要 CSRFトークンがCookieに依存する形式で運用されているにもかかわらず、 そのトークンがセッションを識別するためのCookie(例:session)とは別のCookie(例:csrfKey)に紐づいている場合、 セッションとトークンが一…
Hello there, ('ω')ノ 脆弱性の概要 このラボでは、CSRFトークンがユーザーのセッションと適切に紐づいていないため、攻撃者が自分のトークンを利用して他のユーザーのアカウントに対して不正な操作を行うことが可能です。具体的には、攻撃者が自身の有効な…
Hello there, ('ω')ノ ✅ 脆弱性の本質 通常、CSRFトークンはログインセッションごとに一意であり、 「このトークンはこのユーザーだけが使えるもの」である必要があります。 しかし一部のアプリでは次のような致命的な設計ミスがあります: 発行済みトークン…
Hello there, ('ω')ノ 概要 このラボでは、CSRF(クロスサイトリクエストフォージェリ)トークンの検証が、トークンがリクエストに含まれている場合にのみ行われるという脆弱性を突きます。つまり、トークンがリクエストに含まれていない場合、サーバーは検…
Hello there, ('ω')ノ ✅ 問題の本質:「トークンがあれば検証するが、なければ何もしない」 ある種のアプリケーションでは、次のような致命的な実装ミスがあります: 「CSRFトークンが送られてきたら検証するが、送られてこなければ検証をスキップする」 攻…
Hello there, ('ω')ノ ラボの概要 このラボでは、メールアドレス変更機能がCSRFトークンを使用して保護されていますが、POSTリクエストに対してのみトークン検証が行われ、GETリクエストでは検証がスキップされるという脆弱性があります。 攻略手順 1️⃣ 自…
Hello there, ('ω')ノ ✅ 問題の本質:リクエストメソッドによってCSRFトークン検証をスキップしている 多くのアプリケーションでは、 POSTリクエストにはCSRFトークンを求めて厳密に検証するが GETリクエストにはトークンを求めない or チェックしないという…
Hello there, ('ω')ノ ✅ CSRF脆弱性は「トークンがない」だけが原因ではない 最近のWebアプリではCSRFトークンが導入されていることが多いですが、 正しく実装・検証されていないことによって、トークンがあってもバイパスされるケースが頻出します。 よく…
Hello there, ('ω')ノ ✅ フォーム送信時のリクエスト例 以下は、CSRFトークンを正しく含んだリクエストの構造です: POST /my-account/change-email HTTP/1.1 Host: normal-website.com Content-Type: application/x-www-form-urlencoded csrf=50FaWgdOhi9M9…
Hello there, ('ω')ノ ✅ CSRFトークンとは? CSRFトークン(Cross-Site Request Forgery Token) とは: 一意(unique) 秘密(secret) 予測不能(unpredictable) な値であり、サーバー側で生成し、クライアントに渡される「検証用の鍵」です。 目的:リ…
Hello there, ('ω')ノ ✅ 現代のWebアプリで一般的に導入されているCSRF防御 CSRF攻撃はシンプルですが、その分対策もしやすく、 最近のWebアプリでは防御手段が複数組み合わされていることが一般的です。 以下に、最も一般的な3つの対策を紹介します。 1️⃣ C…
Hello there, ('ω')ノ ✅ CSRF攻撃の「届け方(配信)」とは? CSRFは単なるHTMLリクエストの仕組みなので、攻撃ページをどのようにユーザーに開かせるかがカギになります。 この「配信方法」は、反射型XSSと同様の手口がよく使われます。 代表的なCSRFの配…
Hello there, ('ω')ノ ラボの目的 このラボでは、CSRF防御が一切実装されていないメールアドレス変更機能を攻撃します。 目標は: 攻撃用HTML(CSRF)を作成し それをExploit Serverにアップロードし 「Deliver to victim」機能で被害者に攻撃を仕掛ける ✅ …
Hello there, ('ω')ノ ✅ CSRF攻撃のHTMLを手動で作るのは大変… リクエストのパラメータが多い 特殊なHTTPヘッダーや挙動がある といった場合、手作業で正確なHTMLフォームを作成するのは時間がかかりミスもしやすいです。 ️ 解決策:Burp Suite Professional…
Hello there, ('ω')ノ ✅ 被害者が攻撃者のページを訪れるとどうなるか? 攻撃者が作成したHTMLを仕込んだページに、被害者がアクセスすると: 1️⃣ 攻撃ページがHTTPリクエストを発動 <form action="https://vulnerable-website.com/email/change" method="POST"> <input type="hidden" name="email" value="pwned@evil-user.net" /> </form> <script> document.forms[0].submit(); </script> → J…
Hello there, ('ω')ノ ✅ 攻撃者が構築するHTMLページの実例 以下は、攻撃者がCSRFを実行するために作成する典型的なHTMLコードです: <html> <body> <form action="https://vulnerable-website.com/email/change" method="POST"> <input type="hidden" name="email" value="pwned@evil-user.net" /> </form> <script> document.forms[0].submit(); </script> </body> </html>
Hello there, ('ω')ノ ✅ 攻撃が成立する具体的なシナリオ CSRFの仕組みをよりリアルな例で見てみましょう。 ここでは「ユーザーのメールアドレスを変更する機能」があるWebアプリが対象です。 通常のリクエスト(正規ユーザーによる操作) POST /email/chan…
Hello there, ('ω')ノ ✅ CSRF(クロスサイトリクエストフォージェリ)の成立条件 CSRF攻撃を成立させるためには、次の3つの条件がそろっている必要があります。 条件①:実行すべき意味のある操作(リクエスト)が存在する 攻撃者にとって実行させたいアクシ…
Hello there, ('ω')ノ ✅ CSRF攻撃の基本:「ユーザーのふりをして操作させる」 CSRF(クロスサイトリクエストフォージェリ)攻撃が成功すると、 攻撃者は被害者ユーザーの代わりに勝手にリクエストを送信させることができます。 このとき、被害者は自分の意…
Hello there, ('ω')ノ ✅ CSRF(クロスサイトリクエストフォージェリ)とは? CSRF(Cross-Site Request Forgery) とは、 ユーザーが意図しない操作を、攻撃者が間接的に実行させる Webアプリケーションの脆弱性です。 別名:セッションライディング、ワン…