【注意】このサイトに記載されていることを他人に試すことは「不正アクセス禁止法」に該当する場合があります。詳しくはこちらから

なぜ、ハッカーはBurp Suiteを利用するのですか?(2) Reflective XSSの脆弱性を発見する方法の操作

Burp Suiteの利用

Reflected-XSS(反射型XSS)は、ユーザーが特定のリンクをクリックしたときにのみ被害が発生します。
やられサーバーである「DVWA(Damn Vulnerable Web Application)」を利用して確認を行います。

Reflective XSS(リフレクティブ クロスサイトスクリプティング)とは

Reflective XSS(反射型クロスサイトスクリプティング)は、ウェブアプリケーションに存在するセキュリティ上の脆弱性の一つです。
攻撃者は悪意のあるスクリプトを含むURLを作成、そのURLにユーザを誘導します。
ユーザーはそのURLのリンクをクリックすると、スクリプトが実行され、攻撃者の意図した操作が行われる攻撃になります。
 
例えば、怪しいメールから送られてきたリンクをクリックすると、自分のアカウントが勝手に操作されてしまったり、怪しいサイトに誘導されたり、ユーザーのセッション情報を盗み出したりします。
Reflective XSSは、ユーザーが特定のリンクをクリックしたときに発動するため、アクセスするアドレスに十分注意してクリックすることが必要です。
 
 

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

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

Burp Suiteを利用したReflective XSSの脆弱性の確認方法

1.Reflective XSSの脆弱性の確認方法はいくつかあるのですが、今回は簡単なテストケースで脆弱性を確認したいと思います。
 
a.貴方の名前を入力するフィールドに名前を入力して表示する機能があります。
 
b.「Yamada」と入力して「Submit」ボタンを押下します。
 
c.「Hello Yamada」と表示されました。
 
もし、このフィールドに名前以外の意図したコードを入力して表示されたら脆弱性があると判断できます。
今回は、Java Scriptコードを入力して動作確認を行います。
 
2.XAMPPを起動します。
 
3.Burp Suiteを起動してDashboard画面が表示されました。
 
4.Burp Suiteの画面で「Proxy」から「Intercept」の画面を表示して、画面中ほどにある「Open browser」ボタンを押下します。
 
5.ブラウザが立ち上がりました。
 
6.DVWAサイト(やられサーバー)を起動します。
アドレスは「localhost/dvwa/login.php」
 
7.ログイン画面で
Username:admin
Password:passwordを入力して「Login」ボタンを押下します。
 
8.DVWAサイトが立ち上がりました。
 
9.DVWAサイトのセキュリティの設定方法について
DVWAのセキュリティレベルの設定は、左サイドバーの「DVWA Security」の画面で行うことができます。セキュリティレベルは、Low(低)、Mediun(中)、High(高)、Impossible(不可能)の4つのレベルから選択することができます。それぞれのレベルは、異なるセキュリティ設定を持ちます。
 
a.Low(低)
このセキュリティレベルは完全に脆弱であり、一切のセキュリティ対策がありません。悪いコーディングの実践を通じてウェブアプリケーションの脆弱性がどのように現れるかの例として使用され、基本的な攻撃技術を教えたり学んだりするプラットフォームとして機能します。
 
b.Medium(中)
このセキュリティレベルはユーザーに悪いセキュリティの実践の例を提供することを主な目的としています。ここでは、開発者が努力しましたが、アプリケーションをセキュアにすることに失敗した例を示します。また、ユーザーにとっては、攻撃技術を磨くためのチャレンジとしても機能します。
 
c.High(高)
このセキュリティレベルは中程度の難易度の拡張機能であり、より難しいまたは代替の悪い実践を組み合わせてコードをセキュアにしようとします。この脆弱性は、さまざまなCapture The Flags(CTF)コンペティションと似ていますが、同じ程度の攻撃を許可しません。
 
d.Impossible(ハッキング不可能)
このセキュリティレベルのハッキングは極めて難しい設定で、全ての脆弱性に対して安全とされています。
 
このテストでは、脆弱性の有る/無しの確認のため、セキュリティレベルLow(低)とImpossible(不可能)で比較します。
 
e.セキュリティレベルの設定は図のプルダウンから「Impossible(不可能)」のレベルを選択して「Submit」ボタンをクリックします。
 
 
10.DVWAサイトのセキュリティが「Impossible(不可能)」になりました。
※セキュリティの対応がされているwebアプリケーションになります。
 
11.Reflected Cross Site Scripting (XSS)の確認を行います。
左サイドバーの「XSS(Reflected)」をクリックします。
 
12.「Vulnerability: Reflected Cross Site Scripting (XSS)」画面が表示されました。
 

脆弱性無しの確認方法

1.ここからが、本当に確認に入ります。
Burp Suiteの「Proxy」から「Intercept」で「Intercept off」をクリックして「Intercept on」に変更します。
※これで、Burp Suiteで「リクエスト」と「レスポンス」が確認できるようになります。
 
2.「What’s your name?」に脆弱性を確認するコードを入力します。
今回は、Burp Suiteの操作手順を見てもらうために、簡単な「Java Scriptコード」でテストをします。 
“<script>alert(“Vulnerability-Discovery")</script>"
※アラートメッセージを表示するスクリプトです。
(任意のテキストメッセージをポップアップで画面に表示します。)
現在は、DVWAサイトのセキュリティが「Impossible(不可能)」です。
 
3.「Submit」ボタンを押下します。
すると、Burp SuiteのInterseptが設定されているので、webサーバーに送信するレスポンスの情報が表示されます。
 
リクエストのデータの位置は以下のBurp Suiteの場所になります。
 
赤下線の情報が入力情報になります。
“%3Cscript%3Ealert%28%22Vulnerability-Discovery%22%29%3C%2Fscript%3E"
この情報は、ASCII文字の"<script>alert(“Vulnerability-Discovery")</script>"を「URLエンコード」されています。
 
4.次に「Foward」ボタンを押下して、webサーバーへ情報を送ります。
そして、webサーバーが処理をした結果、クライアントにレスポンス情報を送信します。
その結果、レスポンスのデータはこの時点でブラウザに送信されて結果が表示されています。
このレスポンスの情報はBurp Suiteの「HTTP history」に保存されています。
 
 
5.「Proxy」から「HTTP history」に表示されている一番最後の情報をクリックしてください。
この「HTTP history」では今までのすべての処理の「リクエスト」と「レスポンス」の情報が表示されています。
レスポンスの情報は、ブラウザに表示する情報になっています。
表示する内容は(赤下線)
“&lt;script&gt;alert(&quot;Vulnerability-Discovery&quot;)&lt;/script&gt;"
このコードはHTMLコードをブラウザ上で表示させる特殊文字になっています。
ブラウザを見てもらえばわかるのですが
と表示されました。
入力した文字が、そのまま表示されました。
当たり前なのですが、これが「脆弱性無し」となります。
 

脆弱性有りの確認方法

1.DVWAサイトのセキュリティの設定をLow(低)にします。
※セキュリティの対応がされていないwebアプリケーションになります。
 
2.再度「What’s your name?」に脆弱性を確認するコードを入力します。
“<script>alert(“Vulnerability-Discovery")</script>"
 
3.「Submit」ボタンを押下します。
すると、Burp SuiteのInterseptが設定されているので、webサーバーに送信するレスポンスの情報が表示されます。
この情報は、ASCII文字の"<script>alert(“Vulnerability-Discovery")</script>"を「URLエンコード」されています。
リクエストのデータの位置は以下のBurp Suiteの場所になります。
赤下線の情報が入力情報になります。
“%3Cscript%3Ealert%28%22Vulnerability-Discovery%22%29%3C%2Fscript%3E"
この情報は、ASCII文字の"<h1><script>alert(“Vulnerability-Discovery")</script></h1>"を「URLエンコード」しています。
※ここまでは「脆弱性なし」と同じです。
 
4.次に「Foward」ボタンを押下して、webサーバーへ情報を送ります。
そして、webサーバーが処理をした結果、クライアントにレスポンス情報を送信します。
その結果、レスポンスのデータはこの時点でブラウザに送信されて結果が表示されます。
先ほどとは結果が異なります。
 
このレスポンスの情報はBurp Suiteの「HTTP history」に保存されています。
 
 
5.「Proxy」から「HTTP history」に表示されている一番最後の情報をクリックしてください。
レスポンスの情報は、ブラウザに表示する情報になっています。
表示する内容は(赤下線)
“<script>alert(“Vulnerability-Discovery")</script>"
入力したデータがそのまま設定されてブラウザで実行されました。
 
こちらの意図どおり、Java Scriptが実行されました。
プログラムが実行されたと言うことは「脆弱性有り」と言うことですね。
 
 

なぜ、ハッカーはBurp Suiteを利用するのですか?(2) Reflective XSSの脆弱性を発見する方法の操作のまとめ

Reflective XSSの脆弱性を発見する方法をBurp Suiteを利用して操作の説明をしました。
上記の脆弱性の確認は、Burp Suiteを利用しなくても確認できるのですが、使い方が理解できれば、いろいろ役立つと思います。
今回は、入力データだけに着目しましたが、リクエストの情報には、いろいろな情報があり、それらの情報を元に脆弱性を見つけるのですね。