Low

XSS (Stored) level Low on DVWA

Di bawah ini adalah source-code dari XSS (Stored) level low di DVWA.

vulnerabilities/xss_s/source/low.php
<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = stripslashes( $message );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitize name input
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

Mencari Informasi

Terdapat form yang ketika saya coba menginputkan "test<'>" , maka hasilnya akan tersimpan di halaman tersebut.

Dari informasi yang bisa kita dapatkan dari view source, kita bisa mengetahui bahwa tidak ada validasi untuk HTML spesial karakter di sini, sehingga kita bisa dengan mudah melakukan serangan XSS.

Melakukan Serangan

Kita coba dengan payload yang pertama, yaitu:

<script>alert('Hacked')</script>

Dan berhasil!😊

Jika dilihat menggunakan view source, maka akan terlihat seperti berikut:

Seperti biasa kita juga bisa mengambil cookie dengan payload berikut:

<script>alert(document.cookie)</script>

Yup! Jika halaman ini di-refresh, maka payload tersebut akan dijalankan lagi karena sekarang payload tersimpan (stored) pada halaman web tersebut.

Happy Hacking! 🍻

Last updated