なぜ、ハッカーはBurp Suiteを利用するのですか?(5) CSRF(クロスサイト・リクエスト・フォージェリ)の脆弱性を発見する方法の操作

Burp Suiteの利用

CSRF(Cross-Site Request Forgery)は、ユーザーが意図しない操作を第三者が実行させる攻撃手法です。
この攻撃により、個人情報の漏洩、不正な資金移動、アカウント設定の変更などの被害を受けることがあり、ユーザーの信頼が損なわれ、企業は経済的損失や法的責任を負うリスクがあります。

CSRF(クロスサイト・リクエスト・フォージェリ)とは

CSRFは、インターネットのセキュリティに関する攻撃の一種です。
 
たとえば・・・
1.自宅で銀行のwebサイトにログインして残高を確認します。
自分の銀行アカウントにアクセスするために自分のユーザー名とパスワードを入力してログインします。
ログインすると、その銀行のサイトからあなたのブラウザに「この人は本物のユーザーだよ」という証拠(セッション)が渡されます。
※ここでのセッションはクッキーによるHTTPセッションです。
 
2.銀行のwebサイトのアクセス中に、友人(?)からメールがきました。
メールのリンクが面白そうだったのでクリックしました。
表示されたサイトは、ブラックハッカーが作った「偽のwebサイト」だったのです。
この「偽のwebサイト」は、見た目は普通のページのように見えるのですが、裏で悪いコードが含まれ実行されます。
 
3.あなたは銀行にログインしている状態(HTTPセッションが有効な状態)で、その「偽のサイト」にアクセスすると、偽サイトはあなたのHTTPセッションを使って銀行にリクエストを勝手に送ります。
例えば、「あなたのアカウントから別のアカウントにお金を送る」という指示を実行します。
 
4.あなたは知らぬ間に、他人に送金されてしまいました。
 

CSRFの脆弱性を見つけるためのテスト環境について

「やられサーバー」と「Burp Suite」の環境が無い方は、こちらをご覧ください。
 
・やられサーバーを作成される方は、こちらをご覧ください。
 
・WindowsにBurp Suiteをインストールされる方は、こちらをご覧ください。
 
 

CSRFの脆弱性の確認方法

今回は、Burp Suiteのリクエストの情報に「CSRFトークン」が含まれているか確認します。
まず、ハッキング出来ない正常の状態から確認していきます。
 

Impossible(ハッキング不可能)レベルでの確認方法

 
1.DVWAサイトを立ち上げます。この時、
Username:admin
Password:password
であることを確認してください。
 
2.DVWAのサイドメニューの「DVWA Security」で、セキュリティを"Impossible"に変更します。
 
3.DVWAのサイドメニューの「CSRF」をクリックして、「Cross Site Request Forgery」のページに移動します。
 
4.DVWAサイトのパスワードを変更するため、以下の項目を設定します。
・Current password:"password"
・New password:"pass"
・Confirm new password:"pass"
※パスワードを"password"から"pass"に変更しました。
 
5.ここで「Burp Suite」の「Proxy」タブの「Intercept」タブを開の「Intercept off」をクリックして「Intercept on」に変更します。
 
6.ブラウザに戻り「Change」ボタンを押下します。
 
7.「Burp Suite」の画面で処理が停止し、webサーバーに送信する前の「リクエスト」の情報が表示されます。
 
8.この情報に「CSRFトークン」が含まれているか確認します。
一行目のGETリクエスト情報に「CSRFトークン」が含まれてしました。
“GET /dvwa/vulnerabilities/csrf/?password_current=password&password_new=pass&
password_conf=pass&
Change=Change&
user_token=e1bdf385ef15b68ddd9a431a57d66389 HTTP/1.1
 
この中の user_token パラメータがCSRFトークンに該当します。
“user_token=e1bdf385ef15b68ddd9a431a57d66389"
 
CSRFトークンは、CSRF攻撃を防ぐためにサーバー側で生成され、クライアント(通常はフォームやリクエストパラメータ)に埋め込まれている一意のトークンになります。
リクエストを送信する際、サーバーはこのトークンを検証することで、そのリクエストが正当なユーザーからのものであることを確認します。
 
したがって、このリクエストにはCSRFトークンが含まれているため、セキュリティの"Impossible"状態では、CSRF攻撃に対する防御がなされている可能性があります。
 
9.「Burp Suite」の画面で「Intercept is on」をクリックして「Intercept off」にすることにより、パスワード変更処理を完了させます。
 
10.ブラウザを参照すると「Password Changed」と表示されパスワードが変更されました。
 

Low(低)レベルでの確認方法

※現在のDVWAのパスワードは"pass"です。
 
1.DVWAのサイドメニューの「DVWA Security」で、セキュリティを"Low"に変更します。
このセキュリティレベルLowは完全に脆弱であり、一切のセキュリティ対策がありません。
 
2.DVWAのサイドメニューの「CSRF」をクリックして、「Cross Site Request Forgery」のページに移動します。
※注意:セキュリティのInpossibleの時の画面と違っています。
 
 
3.DVWAサイトのパスワードを変更するため、以下の項目を設定します。
・New password:"password"
・Confirm new password:"password"
※パスワードを"pass"から"password"に変更しました。
 
4.ここで「Burp Suite」の「Proxy」タブの「Intercept」タブを開の「Intercept off」をクリックして「Intercept on」に変更します。
 
5.ブラウザに戻り「Change」ボタンを押下します。
 
6.「Burp Suite」の画面で処理が停止し、webサーバーに送信する前の「リクエスト」の情報が表示されます。
 
7.この情報に「CSRFトークン」が含まれているか確認します。
この情報にはCSRFトークンが含まれていません。
 
以下のGETリクエストにはCSRFトークンが含まれているか確認するためのパラメータがありません:
GET /dvwa/vulnerabilities/csrf/?password_new=password&
password_conf=paswsowrd&
Change=Change HTTP/1.1
 
これらのパラメータの中にはCSRFトークンを示すものがありません。CSRFトークンは通常、user_tokenやcsrf_token、authenticity_tokenといった名前のパラメータとして含まれることが多いです。
 
したがって、このリクエストはCSRFトークンが含まれていないため、セキュリティの"Low"状態ではCSRF攻撃に対する防御が行われていない可能性があります。
 
8.「Burp Suite」の画面で「Intercept is on」をクリックして「Intercept off」にすることにより、パスワード変更処理を完了させます。
 
9.ブラウザを参照すると「Password Changed」と表示されパスワードが変更されました。
 
 

なぜ、ハッカーはBurp Suiteを利用するのですか?(5) CSRF(クロスサイト・リクエスト・フォージェリ)の脆弱性を発見する方法の操作のまとめ

Burp SuiteのProxyタブでリクエストをキャプチャし、そのリクエストにCSRFトークンが含まれているか確認しました。
トークンが無い場合や、トークンが適切に検証されていない場合は、CSRFの脆弱性があると判断できます。