Anasayfa Writeup Brute Force DVWA (Low)

Brute Force DVWA (Low)

Brute Force DVWA (Low) adlı bu writeup ta Damn Vulnerable Web Application ın odalarında biri olan Brute Force odasının Low seviyesinin çözümü gösterilmektedir.

Deneme yapmak ve sistemin nasıl tepkiler verdiğini anlamak için ‘Username’ ve ‘Password’ alanlarına rastgele değerler deneyerek başlanmıştır.

Bu değerler Burp Suite ile incelendiğinde Username, Password, Login alanlarının GET edildiği görülmektedir.

Bu aşamada Brute Force saldırısında bulunmak için, isteği Intruder a göndererek atak parametrelerini vermek gerekmektedir.

Atak tipinin Cluster Bomb seçilmesi gerekmektedir. Bunun sebebi Cluster Bomb tüm payload kombinasyonlarını denemesidir.

Payload pozisyonları ve atak tipi belirtilmiştir.

Brute Force saldırısını gerçekleştirmek için payloads sekmesine gelerek gerekli worlist i yüklemek gerekmektedir. bu write up ta wordlist olarak best1050.txt kullanılmıştır.

Atağa başladıktan belirli bir süre sonra Length kısmında diğer isteklerden ayırt edilen bir farka rastlanmaktadır.

Bu istek paketi incelenğinde sistemin “Usarname=admin” ve “Password=password” girdilerine tepki verdiği görünmektedir.

Denenmiş olan payload lardan ‘length’ değerinde farklılık olan ile giriş denemesi yapıldığında sisteme başarılı bir şekilde giriş yapılmıştır.

Payload: Username=admin & Password=password

📋Kaynak Kod Analizi

Brute Force DVWA (Low) da, bu sistemin nasıl çalıştığına dair daha fazla bilgiye ulaşabileceğimiz bir yer olan kaynak kod analizi kısmına gelelim.

‘View Source’ a tıklayarak sayfanın PHP kaynak kodlarını incelemekle başlıyoruz.

<?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);
}

?> 
PHP

Gelin bu sistemin arka planında neler çalıştığını daha detaylı inceleyelim;

  • 3. satırda $_GET['Login'] değişkenin varlığını kontrol eder. $_GET ile alınan veriler URL’den gelen verileri temsil eder, yani bu kodun bir URL parametresi olarak çağrılması gerekmektedir.
  • Eğer Login parametresi varsa, kullanıcıdan gelen kullanıcı adı ve şifre bilgilerini alır:
    • $user değişkeni, $_GET['username'] ile gelen kullanıcı adını tutar.
    • $pass değişkeni, $_GET['password'] ile gelen şifreyi tutar.
  • 9. satırda password değeri MD5 hash fonksiyonu kullanılarak şifrelenmiştir. Bu password ün veritabanında şifrelenmiş hali ile karşılaştırılmasında da kolaylık sağlar.
  • 12. satırda SQL sorgusu oluşturulduğu görülmektedir. Bu sorgu; “users” tablosundaki, “user” ve “password” sütunlarındaki, kullanıcı adı ($user) ve parola ($pass) ile eşleşen bir kayıt arar.
  • 13. satırda bu sorgu mysqli_query ile veritabanına gönderilir ve sorgu sonucunda dönen değer $result değişkenine atanır.
  • 15. satırda $result değişkeni kontrol edilir. Eğer sorgu bir sonuç döndürdüyse ve bu sonuç sadece 1 satır ise (bir kullanıcı bulunmuşsa), o zaman kullanıcının girişi başarılıdır. Daha sonra kullanıcının avatar resmi ve ‘hoş geldiniz’ mesajı görüntülenmekte.
  • Eğer sorgu sonucunda 0 satır dönerse, kullanıcının girişi başarısızdır ve “Username and/or password incorrect.” şeklinde bir hata mesajı görüntülenir.


    Diğer yazılarımıza bakmak iserseniz :
    https://hacktorx.com/tableau-td3-cihaz-seti-incelemesi/

    https://hacktorx.com/api-ve-api-guvenligi/

Erkan Çekiç

Merhaba. Henüz çocukluk dönemimde yanmaya başlayan siber güvenlik ateşini lise ve üniversite dönemlerinde de harlayan, zamanının büyük bir bölümünü çalışmak ve bir şeyler üretmek üzerine kullanan biriyim.

More Reading

Post navigation

Leave a Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir