Injection
Cacat injeksi sangat umum terjadi dalam aplikasi saat ini. Cacat ini terjadi karena aplikasi mengartikan masukan yang dikendalikan pengguna sebagai perintah atau parameter. Serangan injeksi bergantung pada teknologi apa yang digunakan dan bagaimana teknologi ini mengartikan masukan. Beberapa contoh umum meliputi:
.
.
Pertahanan utama untuk mencegah serangan injeksi adalah memastikan bahwa masukan yang dikendalikan pengguna tidak ditafsirkan sebagai permintaan atau perintah. Ada beberapa cara untuk melakukannya:
.
.
Karakter atau input berbahaya diklasifikasikan sebagai input apa pun yang dapat mengubah cara data yang mendasarinya diproses. Alih-alih membuat daftar izin atau menghapus input secara manual, ada berbagai pustaka yang dapat melakukan tindakan ini untuk Anda.
Command Injection
Command Injection terjadi saat kode sisi server (seperti PHP) dalam aplikasi web memanggil fungsi yang berinteraksi langsung dengan konsol server. Kerentanan web injeksi memungkinkan penyerang memanfaatkan panggilan tersebut untuk menjalankan perintah sistem operasi secara acak di server. Kemungkinan bagi penyerang dari sini tidak terbatas: mereka dapat membuat daftar file, membaca kontennya, menjalankan beberapa perintah dasar untuk melakukan pengintaian di server atau apa pun yang mereka inginkan, sama seperti mereka duduk di depan server dan mengeluarkan perintah langsung ke baris perintah.
Code Example
Mari kita pertimbangkan sebuah skenario: MooCorp telah mulai mengembangkan aplikasi berbasis web untuk seni ASCII sapi dengan teks yang dapat disesuaikan. Saat mencari cara untuk mengimplementasikan aplikasi mereka, mereka menemukan perintah
[?php
if (isset($_GET["mooing"])) {
$mooing = $_GET["mooing"];
$cow = 'default';
if(isset($_GET["cow"]))
$cow = $_GET["cow"];
passthru("perl /usr/bin/cowsay -f $cow $mooing");
}
?]
Secara sederhana, cuplikan di atas melakukan hal berikut:
1. Memeriksa apakah parameter "
2. Memeriksa apakah parameter "
3. Program tersebut kemudian mengeksekusi fungsi tersebut
Exploiting Command Injection
Sekarang setelah kita mengetahui cara kerja aplikasi di balik layar, kita akan memanfaatkan fitur bash yang disebut "inline commands" untuk menyalahgunakan server cowsay dan menjalankan perintah sembarangan yang kita inginkan. Bash memungkinkan Anda menjalankan perintah di dalam perintah. Ini berguna karena berbagai alasan, tetapi dalam kasus kita, ini akan digunakan untuk menyuntikkan perintah di dalam server cowsay agar dapat dijalankan.
Untuk menjalankan perintah sebaris, Anda hanya perlu melampirkannya dalam format berikut
Karena aplikasi menerima masukan apa pun dari kita, kita dapat menyuntikkan perintah sebaris yang akan dijalankan dan digunakan sebagai parameter untuk cowsay. Ini akan membuat sapi kita mengatakan apa pun yang dikembalikan oleh perintah tersebut! Jika Anda tidak begitu mengenal Linux , berikut ini beberapa perintah lain yang mungkin ingin Anda coba:
.
.
.
.
.
.