# 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-data`pada 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.anggipradana.com/tutorial/dvwa/command-injection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
