Semua orang menyukai skrip shell! Tak heran jika sebagian besar produk keamanan berbasis Linux banyak menggunakan skrip shell. Seringkali, skrip shell lebih mudah dikembangkan dibandingkan program C/C++ karena tidak ada kerumitan kompilasi dan mudah dibuat prototipenya.
Namun, selain memiliki aplikasi yang tak terbatas, skrip shell memiliki banyak bahaya tersembunyi dalam konteks keamanan – hal ini sering kali diabaikan saat menulis skrip shell.
Misalnya, pertimbangkan skrip shell, yang hanya menggunakan perintah ping untuk memeriksa konektivitas antara dua host.
#! / bin / bash
ping –c1 “$1”
Dalam kasus penggunaan ini, $1 merupakan input yang mungkin berasal dari CGI atau skrip lain. Jika input tidak divalidasi dengan benar, peretas dapat dengan mudah mengeksploitasi substitusi perintah tersebut.
ping –c1 “8.8.8.8 && perintah”
Dalam contoh ini, skrip shell akan memperlakukan argumen yang diteruskan ke ping sebagai perintah terpisah saat dieksekusi. Namun, ada beberapa cara lain untuk mencapai substitusi perintah ini.
ping –c1 “8.8.8.8`perintah`”
ping –c1 8.8.8.8| perintah
ping –c1 8.8.8.8; perintah
Pada sebagian besar produk keamanan tingkat gateway seperti Unified Threat Management (UTM) , firewall menyediakan portal untuk pengguna akhir. Portal memfasilitasi banyak layanan termasuk pengunduhan alat akses jarak jauh, pengambilan email yang dikarantina, perubahan preferensi pengguna, dan sebagainya.
Layanan ini mengharapkan beberapa bentuk masukan pengguna dan dapat memanggil skrip shell di bagian belakang produk perangkat lunak.
Akibat eksploitasi semacam itu, penyerang dapat memperoleh izin root untuk menjalankan perintah jarak jauh pada perangkat yang rentan dengan mengirimkan input berbahaya. Setelah perangkat yang rentan diakses, penyerang dapat menyusup ke jaringan suatu organisasi.
Meskipun masukan pengguna divalidasi sebagian besar waktu, selalu ada kemungkinan beberapa validasi mungkin hilang berkali-kali.
Serangan substitusi perintah ini juga dikenal sebagai 'Eksekusi Perintah Jarak Jauh Pra-Otentikasi' karena penyerang dapat menjalankan eksploitasi ini tanpa kredensial yang valid.
Baru-baru ini kelemahan ini ditemukan pada peralatan firewall dari merek ternama.
In Seqrite UTM, kami secara eksplisit berfokus pada area tersebut selama pengembangan sehingga perangkat tidak rentan terhadap eksploitasi umum tersebut.
Berikut ini adalah beberapa panduan untuk menulis skrip shell yang aman:
- Gunakan jalur absolut atau relatif untuk perintah yang digunakan dalam skrip.
- Tetapkan nilai variabel PATH yang benar dalam skrip.
- Gunakan kutipan yang tepat untuk variabel yang dilewatkan sebagai argumen.



