Low

Brute Force level Low on DVWA

Di bawah ini adalah source-code dari form login level low di DVWA.

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

if( isset( $_GET[ 'Login' ] ) ) {
    // Get username
    $user = $_GET[ 'username' ];

    // Get password
    $pass = $_GET[ 'password' ];
    $pass = md5( $pass );

    // Check the database
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $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>' );

    if( $result && mysqli_num_rows( $result ) == 1 ) {
        // Get users details
        $row    = mysqli_fetch_assoc( $result );
        $avatar = $row["avatar"];

        // Login successful
        echo "<p>Welcome to the password protected area {$user}</p>";
        echo "<img src=\"{$avatar}\" />";
    }
    else {
        // Login failed
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

Mencari Informasi

Perhatikan bahwa form ini menggunakan method GET, sehingga data akan dikirim melalui URL. Contohnya, ketika saya mengisi nilai username menjadi "admin" dan password "123456", maka data tersebut akan terlihat di URL-nya:

http://172.17.0.2/vulnerabilities/brute/?username=admin&password=12345&Login=Login#

Untuk mengetahui lebih lanjut tenang method GET ini, anda bisa membaca artikel CodeSaya.

Dan jika inputan salah akan muncul pesan seperti pada baris ke-26, yaitu muncul pesan seperti berikut:

Selain itu kita bisa melihat cookie-nya terlebih dahulu menggunakan Burpsuite (atau menggunakan inspect element pada browser).

Terlihat bahwa terdapat cookie PHPSESSID dan security yang digunakan untuk mengatur web itu sendiri. Cookie ini akan kita gunakan untuk melakukan brute force.

Jika kita mengamati source-code-nya lagi, terlihat bahwa tidak adanya Anti-CSRF token, limit maupun CAPTCHA. Dengan demikian kita bisa dengan mudah melakukan brute force.

Melakukan Serangan

Pertama, siapkan wordlist yang akan kita gunakan. Saya telah membuat wordlist sendiri, seperti berikut:

Kedua, buka terminal dan jalankan tool Hydra seperti berikut:

hydra 172.17.0.2 -l admin -P DVWA-Wordlist.txt http-get-form "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect.:H=Cookie:PHPSESSID=77jr5376ldag1qc392brdr2b11; security=low"

Penjelasan:

  • 172.17.0.2 adalah IP target yang kita tuju (bisa juga menggunakan domain).

  • -l admin, di sini saya mengasumsikan bahwa kita tahu username dari target adalah "admin" (bukan yang lain).

  • -P DVWA-Wordlist.txt berfungsi untuk menentukan file wordlist untuk password yang akan dicoba satu per satu.

  • http-get-form berfungsi untuk menentukan method yang digunakan pada form adalah GET.

  • username=^USER^&password=^PASS^ nilai tersebut akan diisi dari username (-l) dan password (-P) yang telah kita tentukan sebelumnya.

  • F=Username and/or password incorrect. digunakan untuk membandingkan hasil brute force. Jika menghasilkan teks tersebut berarti password tidak valid.

  • H=Cookie: digunakan untuk mengatur cookie yang digunakan ketika mengakses web tersebut.

Hasil dari perintah di atas adalah seperti berikut:

Terlihat bahwa kata "password" adalah password yang valid.

Jika kita coba pada web, maka akan tampil seperti berikut:

Yups! Selamat! Kita berhasil melakukan brute force pada level low, sekarang kita lanjut ke level medium.😁

Last updated