Low

Command Injection level Low on DVWA

Di bawah ini adalah source-code dari command injection level low di DVWA.

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

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";
}

?>

Mencari Informasi

shell_exec() adalah fungsi bawaan PHP yang berfungsi untuk menjalankan perintah melalui shell dan mengembalikan output yang lengkap sebagai string.

Terlihat bahwa pada baris ke-10 dan 14 program ini menjalankan perintah ping ke target yang diinputkan oleh user.

Contoh dari penggunaan program ini adalah seperti berikut:

Jika kita perhatikan source code-nya, tidak ada validasi inputan. Pada Unix/Linux, tanda ; memungkinkan user bisa menjalankan beberapa perintah sekaligus pada satu baris yang sama.

Melakukan Serangan

Setelah mengetahui bahwa tidak ada validasi input, kita bisa memanfaatkan ; untuk menjalankan perintah lainnya. Seperti contohnya 8.8.8.8; whoami yang digunakan untuk mengetahui user yang sedang digunakan.

Kita juga bisa melihat isi dari file /etc/passwd dengan memasukkan 8.8.8.8; cat /etc/passwd, membuat backdoor, dll. Maka dari itu, command injection ini sangatlah berbahaya.

Selanjutnya, anda bisa melakukan back connect, dengan cara reverse shell atau bind shell. Penjelasan tentang back connect bisa anda baca di sini.

Alternatif ;

Selain menggunakan ; kita juga memiliki alternatif lain seperti berikut yang bisa digunakan di shell bash.

  • && — AND Operator

  • | — PIPE Operator (menghapus hasil ping dari output)

Selamat! Kita telah berhasil melakukan command injection. Silahkan anda bisa mencoba melakukan eskalasi lebih lanjut.😆

Last updated