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

Burp Suiteの利用

DOM-Based XSS(Document Object Model-Based Cross-Site Scripting)は、ウェブページに悪意のあるコード(プログラム)を仕込んで、見ている人のコンピュータでそのコードを勝手に実行させる攻撃のことです。
この攻撃は、ウェブページがどのように内容を表示するかを決める「DOM」を悪用します。

DOM(Document Object Model)とは

DOMは、ウェブページの構造を表す設計図(モデル)です。
ウェブページはHTMLという言語で書かれていて、ブラウザはこのHTMLを読み取って、私たちが見やすいように体裁を整えます。DOMは、ウェブページの各要素(見出し、段落、画像など)がどこにあり、どういうふうに並んでいるかを示しています。
DOMの主な役割は、JavaScriptというプログラムでウェブページを操作できるようにすることです。例えば、ボタンをクリックすると文字の色が変わるといった操作が可能になります。JavaScriptを使って、DOMの要素を追加したり、削除したり、内容を変更したりできます。
 
 

DOM-Based XSSとは

DOM-Based XSSは、悪意のあるスクリプト(JavaScriptなど)をウェブページに仕込む攻撃のことです。悪意のあるスクリプトが、見ている人のコンピュータでそのコードを勝手に実行させ、ユーザーの個人情報を盗んだり、不正な操作を行ったりすることができます。
この攻撃には、ウェブページがどのように内容を表示するかを決める「DOM」を悪用します。
 
通常のXSSはwebサーバー側で処理されるデータを悪用しますが、DOM XSSはクライアント側、つまりブラウザで動作するJavaScriptを悪用します。
 
 

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

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

DVWAのXSS(DOM)の動作の確認

DVWAのXSS(DOM)の動作を見てみましょう。
 
1.以下のアドレスにアクセスして、「Vulnerability: DOM Based Cross Site Scripting (XSS)」のページを開きます。
 
2.「French」に変更して「Select」ボタンを押下します。
 
3.実行結果を見てみましょう。
たぶん、テストサイトなので内容は変わっていません。
しかし、アドレス部分を確認すると
「Select」ボタンを押下する前のアドレスに
“?default=French"が追加されています。
選択された「French」の情報をアドレスに追加して処理をしている様子です。
 
※この情報が脆弱性を確認するためにキーになりそうです。
 
 

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

DVWAのDOM-Based XSSの脆弱性を確認するために、Burp Suiteを使用する方法をセキュリティレベル(LowとImpossible)ごとに説明します。
 

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

1.DVWAサイトのセキュリティの設定をLow(低)にします。
 
DVWAのセキュリティレベルの設定は、左サイドバーの「DVWA Security」の画面で行うことができます。このセキュリティレベルLow(低)は完全に脆弱であり、一切のセキュリティ対策がありません。
 
2.ブラウザでDVWAの「XSS(DOM)」のページに移動します。
 
3.ここで、Burp Suiteの「Proxy」から「Intercept」画面で「Intercept off」をクリックして「Intercept on」に変更します。
 
4.ブラウザのアドレス欄の現在のアドレスに、スクリプトを追加します。
スクリプトは"<script>alert('Low level XSS(DOM)’);</script>"です。
(JavaScriptでアラートを表示させるスクリプトです。)
アドレス欄の現在のアドレスに追加します。
“http://localhost/dvwa/vulnerabilities/xss_d/?default=<script>alert('Low level XSS(DOM)’);</script>"
 
5.アドレス欄内で「Enter」ボタンを押下して実行します。
その後、Burp Suiteの「Proxy」から「Intercept」画面を見ると
赤下線の情報が入力情報になります。
“%3Cscript%3Ealert(%27Low%20level%20XSS%27);%3C/script%3E “
この情報は、ASCII文字の"<script>alert('Low level XSS(DOM)’);</script>"を「URLエンコード」されています。
 
6.Burp Suiteの「Proxy」から「Intercept」画面で「Forward」ボタンを押下します。
するとXSS(DOM)の脆弱性でアラート画面が表示されました。
 
※アラートの為、Burp Suiteのレスポンス情報には表示されていない様子です。
 

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

※Burp Suiteの「Proxy」から「Intercept」画面で「Intercept on」をクリックして「Intercept off」に変更しておきます。
 
1.DVWAサイトのセキュリティの設定をImpossible(ハッキング不可能)にします。
このセキュリティレベルのハッキングは極めて難しい設定で、全ての脆弱性に対して安全とされています。
 
2.ブラウザでDVWAの「XSS(DOM)」のページに移動します。
 
3.ここで、Burp Suiteの「Proxy」から「Intercept」画面で「Intercept off」をクリックして「Intercept on」に変更します。
 
4.ブラウザのアドレス欄の現在のアドレスに、スクリプトを追加します。
スクリプトは"<script>alert('Impossible level XSS(DOM)’);</script>"です。
(JavaScriptでアラートを表示させるスクリプトです。)
アドレス欄の現在のアドレスに追加します。
“http://localhost/dvwa/vulnerabilities/xss_d/?default=<script>alert('Impossible level XSS(DOM)’);</script>"
 
5.「Enter」ボタンを押下して実行します。
Burp Suiteの「Proxy」から「Intercept」画面を見ると
赤下線の情報が入力情報になります。
“%3Cscript%3Ealert(%27Impossible%20level%20XSS(DOM)%27);%3C/script%3E"
この情報は、ASCII文字の"<script>alert('Impossible level XSS(DOM)’);</script>"を「URLエンコード」されています。
 
6.Burp Suiteの「Proxy」から「Intercept」画面で「Forward」ボタンを押下します。
今回は、XSS(DOM)の脆弱性が無いためでアラート画面が表示されませんでした。
そのかわり、以下のような表示がされました。
 
 

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

DOM-Based XSSは、ウェブページのJavaScriptを悪用して、悪意のあるスクリプトを実行する攻撃です。
Burp Suiteを使ってDOM XSSを見つける方法を紹介しました。
一例として、アドレス欄にアドレス+悪意のあるスクリプトで確認しましたが、DOM-Based XSSの攻撃方法は沢山あるみたいです。
「DVWA Security」のセキュリティレベルには、他にMediumとHighがありますが、これはプログラムがどのようなセキュリティの対応をしているのか、試行錯誤(調査)して脆弱性を見つけなければなりません。
これが、バグハンターの醍醐味なのでしょう。