ハッカーはHTMLインジェクション:Reflected(GET)を利用して攻撃サイトの脆弱性を見つける
攻撃サイトでハッカーはHTMLインジェクションの脆弱性があるか、仮想環境のKali LinuxとOWASPのやられサーバーを利用して簡単なコードで確認します。
HTMLインジェクションReflected(GET)とは
HTMLインジェクションは、Webアプリケーションの脆弱性のひとつです。
入力した内容がWebサイトに表示される場合に行える攻撃で、攻撃者は脆弱性のあるWEBサイトのフォームに、悪意のあるHTMLコードを入力して実行すると、その結果がHTMLとしてWEBサイトに表示されます。
今回テストした環境について
Oracle VM VirtualBox(仮想環境)を用いて、Open Web Application Security Project(OWASP)Broken Web Applicationsのサイトを利用して、Kali Linuxで確認します。
Oracle VM VirtualBoxの環境が無い方は、
ディスクトップパソコンに仮想環境を作成してKali Linux 2021.3をインストール(手順)
OWASPの環境が無い方は、
VM VirtualBox6.1でやられサーバOWASP BWAを構築します
をご覧ください。
テスト環境の準備
1.Oracle VM VirtualBoxを起動します。
2.OWASP BWAを起動します。
3.OWASP BWAのIPアドレスを確認します。
この環境では192.168.56.108
4.OWASP BWAにログインします。
username:root
password:owaspbwa
5.Kali Linuxを起動します。
6.Kali Linuxiにログインします。
username:kali
password:kali
7.ブラウザを開きます。
8.ブラウザのアドレス欄に先ほど調べたOWASP BWAのIPアドレスを入力します。
9.OWASP BWAのサイトが立ち上がりました。
これで、テストの準備ができました。
HTMLインジェクション:Reflected(GET)の脆弱性の確認
HTMLインジェクション:Reflected(GET)の脆弱性の確認をするために、意図的に安全でないウェブアプリケーションであるbWAPP(a buggy web application)のページを利用します。
bWAPPには、セキュリティレベルとして「low」「medium」「high」の3つが有り、
- lowはセキュリティ無し
- mediumはセキュリティ弱
- highはセキュリティ強
になっています。
1.Training Applicationsの「bWAPP」をクリックします。
2.bWAPP(buggy web app)のページが表示されました。
3.bWAPPにログインします。
Login:bee
Password:bug
Set the security level:low
でログインします。
4.bWAPPのPortal画面が表示されました。
HTMLインジェクション:Reflected(GET)のテストを行うため、「HTML Injection – Reflected (GET)」を選択して「Hack」ボタンを押下します。
セキュリティレベル「low」
1.現在のセキュリティレベルは(Set your security level)は「low」です。
(セキュリティがなされていない状態です。)
このページは「First name」と「Last name」を入力して「Go」ボタンを押下すると、下部に「First name」と「Last name」が表示されます。
2.セキュリティレベル「low」でHTMLインジェクション:Reflected(GET)の確認を行います。
First name:yamada
Last name:<h2>hanako</h2>
と入力します。
3.実行すると、hanakoの文字は<h2>の命令が反映されています。
4.セキュリティがなされていないと言うことで、「HTMLインジェクション:Reflected(GET)」成功です。
セキュリティレベル「medium」
次は、セキュリティレベル「medium」です。
(セキュリティ弱で設定されている状態です。)
1.セキュリティレベル「medium」でHTMLインジェクション:Reflected(GET)の確認を行います。
First name:yamada
Last name:<h2>hanako</h2>
と入力します。
2.実行すると、hanakoの文字は<h2>の命令が反映されなくなりました。(文字列として認識されています。)
3.「medium」のセキュリティがされているので、「HTMLインジェクション:Reflected(GET)」失敗になりました。
4.次に「medium」のセキュリティレベルを破るために「<h2>hanako</h2>」をurlエンコードします。
5.urlエンコードとは、文字コードを16進数で表したものを「%」(パーセント記号)に続けて表記し、その文字を置き換えます。urlエンコードした文字はブラウザは普通に読めます。
「<h2>hanako</h2>」の文字をurlエンコードすると
「%3c%68%32%3e%68%61%6e%61%6b%6f%3c%2f%68%32%3e」になります。
◎urlのエンコードをする方法
a.Kali Linuxのメニューから「BurpSuite」で検索して「BurpSuite」を選択してください。
b.「Welcome to Burp Suite Community Edtion.Use the optiohs below to create or open a project.」
(Burp Suite Community Edtionへようこそ!プロジェクトの作成や公開には、以下のオプショをご利用ください。)
の画面で「◎Temporary project」にチェックを入れて「Next」ボタンを押下します。
c.select the configuration that you would like to load for this project.
(このプロジェクトにロードするコンフィギュレーションを選択します。)
の画面で「◎Use Burp defaults」にチェックを入れて「StartBurp」ボタンを押下します。
d.Burp Suite初期画面が表示されます。
e.画面上部メニューの「Decoder」のタブを押下してください。
ここで、urlエンコードができます。
f.上部入力エリアに「<h2>hanako</h2>」を入力して、右メニューの「テキスト」にチェックを入れて、「Encode as…」をプルダウンして「URL」を選択します。
g.下部出力エリアにエンコードされた「%3c%68%32%3e%68%61%6e%61%6b%6f%3c%2f%68%32%3e」が表示されました。
6.取得したurlエンコードの情報を
First name:yamada
Last name:%3c%68%32%3e%68%61%6e%61%6b%6f%3c%2f%68%32%3e
と入力して実行します。
7.実行すると、hanakoの文字は<h2>の命令が反映されて表示されました。
「medium」のセキュリティでの、「HTMLインジェクション:Reflected(GET)」は成功です。
セキュリティレベル「high」
次は、セキュリティレベル「high」です。
(セキュリティ強で設定されている状態です。)
1.セキュリティレベル「high」でHTMLインジェクション:Reflected(GET)の確認を行います。
First name:yamada
Last name:%3c%68%32%3e%68%61%6e%61%6b%6f%3c%2f%68%32%3e
と入力します。
2.実行すると、「%3c%68%32%3e%68%61%6e%61%6b%6f%3c%2f%68%32%3e」の文字列は<h2>の命令が反映されなくなりました。(文字列として認識されています。)
「high」のセキュリティによって、「HTMLインジェクション:Reflected(GET)」失敗になりました。
ハッカーはHTMLインジェクション:Reflected(GET)を利用して攻撃サイトの脆弱性を見つけるのまとめ
HTMLインジェクション:Reflected(GET)について説明させていただきました。
この脆弱性だけで攻撃するのは難しいと思いますが、サイトがどのようなセキュリティをかけているのかの1つの目安にはなりますね。