Pengenalan

Berkenalan dengan command injection

Command Injection adalah salah satu jenis serangan yang sangat berbahaya, karena peretas bisa menjalan perintah secara sewenang-wenang pada komputer victim.

Apa itu Command Injection?

Command Injection adalah serangan yang mana tujuannya adalah mengeksekusi perintah secara sewenang-wenang pada sistem operasi melalui aplikasi yang rentan.

Serangan command injection bisa terjadi ketika sebuah aplikasi (forms, cookies, HTTP headers, dll) bisa menjalankan perintah yang tidak aman dari inputan user ke sistem shell.

Biasanya, hak akses yang dimiliki oleh peretas akan sama dengan aplikasi yang rentan tersebut. Misalnya, di DVWA ini terdapat kerentanan command injection dan aplikasi ini berjalan dengan user www-datapada sistem operasi linux, sehingga peretas akan menjalankan perintah pada komputer target sebagai user www-data tersebut.

Apa itu Shell?

Maksud kata "command" di sini apa? apakah perintah pada bahasa pemrograman? Jawabannya adalah perintah dari shell yang digunakan oleh user di komputer tersebut.

Umumnya, Unix dan Linux menggunakan Bash sebagai shell default-nya. Sedangkan di Windows terdapat Command Prompt dan PowerShell.

Pengetahuan yang Harus Dimiliki

Pemahaman yang paling penting untuk melakukan command injection adalah pemahaman tentang command itu sendiri. Contohnya pada DVWA ini command yang di maksud adalah shell bash, sehingga pentester harus memiliki pemahaman tentang shell bash tersebut.

Bagaimana Cara Mengatasi Command Injection?

Ada beberapa cara untuk menangani command injection ini, diantarnya adalah seperti berikut:

  1. Jangan izinkan perintah exec ke sistem operasi jika itu bisa dihindari.

  2. Melakukan validasi input dari user dengan cara melarang untuk memasukan perintah-perintah yang berbahaya.

  3. Netralkan meta karakter yang memiliki makna pada shell komputer target.

    1. Untuk Windows: Awali setiap karakter dengan ‘^’ untuk "melarikan diri" dan menetralkan makna khususnya kepada penerjemah baris perintah: () <> & * ‘| =? ; [] ^ ~! . ”% @ / \: +,.

    2. Untuk Linux dan Unix: Awali setiap karakter dengan ‘\’ untuk menghindarinya dan menetralkan makna khususnya kepada penerjemah baris perintah: {} () <> & * ‘| =? ; [] $ - # ~! . ”% / \: +,.

  4. Dan lain-lain.

Last updated