Medium

File Upload level Medium on DVWA

Di bawah ini adalah source-code dari file upload level medium di DVWA.

vulnerabilities/upload/source/medium.php
<?php

if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];

    // Is it an image?
    if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
        ( $uploaded_size < 100000 ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
            // No
            echo '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            echo "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
}

?>

Mencari Informasi

Jika kita melakukan hal yang sama seperti sebelumnya (meng-upload file ekstensi .php), maka akan muncul penolakan seperti berikut:

Ini karena pada level ini terdapat validasi terlebih dahulu, hanya ekstensi JPEG dan PNG saja yang diizinkan.

Melakukan Serangan

Setelah mencoba berbagai cara, akhirnya saya menemukan cara untuk mem-bypass-nya, yaitu dengan menggunakan Burpsuite.

Pertama, ubah nama shell.php yang sebelumnya kita buat menjadi shell.php.png.

Kedua, lakukan upload dan intercept request yang kita lakukan menggunakan Burpsuite.

Dan rubah filename nya menjadi shell.php.

Setelah itu matikan intercept-nya agar request terkirim, dan file tersebut akan berhasil di-upload ke server.

Selanjutnya kita bisa menjalankan shell tersebut seperti sebelumnya.

Happy Hacking! 🍻

Last updated