Di bawah ini adalah source-code dari XSS (DOM) level medium di DVWA.
vulnerabilities/xss_d/source/medium.php<?phpβ// Is there any input?if(array_key_exists("default",$_GET)&&!is_null ($_GET['default'])){$default=$_GET['default']; # Do not allow script tagsif(stripos($default,"<script")!==false){header ("location: ?default=English");exit;}}β?>
Mencari Informasi
Secara visual tidak ada perbedaan pada level ini dan sebelumnya. Jika kita mengubah nilai dari parameter tersebut, maka akan tampil seperti sebelumnya.
Perhatikan pada source code baris ke-8, bahwa terdapat validasi jika mengandung kata "<script" pada nilai parameter default, maka akan di redirect ke parameter ?default=English.
Untuk mengatasi ini kita harus mencari cara lain untuk menjalankan JavaScript tanpa menggunakan tag <script>.
Terdapat cara yaitu dengan fungsi onload pada tag HTML. Tetapi untuk melakukan hal tersebut kita harus tutup terlebih dahulu tag sebelumnya (di sini <select>) agar script yang kita inject bisa berjalan.
Melakukan Serangan
Payload yang kita akan dibuat sesuai dengan hasil recon di atas. Sekarang kita akan menutup tag <select> terlebih dahulu dan dilanjutkan oleh script yang menjalankan JavaScript seperti berikut:
Perhatikan dari hasil injetion di atas, tag <select> tertutup terlebih dahulu sebelum tag <option> dan tag <body> memanggil fungsi JavaScript.
Kita juga bisa mendapatkan cookie seperti biasa:
Untuk melakukan serangan XSS, peretas harus paham tentang pola dari HTML website tersebut.