Command Injections (injeksi perintah) adalah sebuah bentuk serangan dimana tujuan penyerang adalah untuk mengeksekusi perintah sewenang-wenang di sistem operasi web server melalui aplikasi web yang rentan. serangan ini bisa terjadi ketika aplikasi berbasis web menyediakan kolom input yang rentan dan tidak aman kepada pengguna untuk memasukkan data/perintah berbahaya.
Selama serangan command injection, perintah diinput oleh penyerang biasanya dijalankan berdasarkan kerentanan dari aplikasi web tertentu. Serangan command injection terjadi sebagian besar karena lemahnya atau tidak memadainya validasi dari input. Injeksi SQL dan XSS (cross-site scripting) adalah dua bentuk serangan command injection yang spesifik.
Serangan injeksi, seperti SQL injection dan OS injection, terjadi ketika data yang tidak dipercaya dikirim ke intepreter sebagai bagian dari perintah atau kueri. Data yang dikirim dapat mengelabui intepreter untuk mengeksekusi perintah yang tidak diinginkan atau mengakses data tanpa otorisasi yang tepat.
OWASP (Open Web Application Security Project) sumber daya non-profit yang menawarkan perangkat lunak bebas dan terbuka yang berfokus pada peningkatan keamanan perangkat lunak. OWASP mempublish daftar kerentanan dalam aplikasi web 2017 atau OWASP Top 10 - 2017 The Ten Most Critical Web Application Security Risks.
Artikel lengkap OWASP The Ten Most Critical Web Application Security Risks diakses melalui link ini
Analis keamanan harus dapat mengenali berbagai bentuk injeksi perintah.
Shell Linux memungkinkan beberapa perintah untuk dimasukkan pada satu baris perintah dengan memisahkannya dengan titik koma. Di bawah ini adalah contoh penggunaan injeksi perintah pada host Linux. (Sumber: https://www.owasp.org/index.php/Command_Injection.)
$ ./catWrapper Story.txt
When last we left our heroes...
Dengan menambahkan titik koma (;), diikuti oleh perintah lain (seperti ls dalam contoh ini), perintah ls dijalankan oleh catWrapper tanpa ada error :
$ ./catWrapper "Story.txt; ls"
When last we left our heroes...
Story.txt doubFree.c nullpointer.c
unstosig.c www* a.out*
format.c strlen.c useFree*
catWrapper* misnull.c strlength.c useFree.c
commandinjection.c nodefault.c trunc.c writeWhatWhere.c
Dalam hal eksploitasi web, injeksi perintah biasanya dimungkinkan ketika situs web memungkinkan penambahan string karakter atau argumen tanpa validasi masukan apa pun. Input pengguna digunakan sebagai argumen untuk mengeksekusi perintah di server hosting situs web.
Karakter tertentu memiliki arti khusus ketika dimasukkan ke dalam halaman web atau konten URL. Karakter ini didasarkan pada spesifikasi HTML, konteks, dan interpretasi browser.
Contoh berikut menggambarkan penggunaan injeksi perintah dalam HTTP request :
Saat melihat file dalam aplikasi web, nama file sering ditampilkan di URL. URL normal:
http://www.example.com/sensitive/cgi-bin/userData.pl?doc=user1.txt
Penyerang memodifikasi URL di atas dengan perintah injeksi yang akan mengeksekusi perintah / bin / ls:
http://www.example.com/sensitive/cgi-bin/userData.pl?doc=/bin/ls
Contoh lain, yang ditunjukkan di bawah ini, menambahkan titik koma di akhir URL untuk halaman .php, diikuti oleh perintah cat, untuk menampilkan konten file /etc/passwd. PHP adalah bahasa scripting yang kuat yang dapat digunakan untuk membangun halaman web dinamis. PHP sangat cocok untuk pengembangan web server-side, di mana PHP umumnya berjalan pada server web.
http://www.example.com/info.php?dir=%3Bcat%20/etc/passwd
%3B dan %20 adalah representasi unicode dari karakter yang sebenarnya. %3B adalah unicode yang mewakili titik koma, dan %20 mewakili spasi. Unicode adalah standar industri komputasi untuk pengkodean yang konsisten, representasi, dan penanganan teks yang diekspresikan di sebagian besar sistem penulisan dunia. Unicode menyediakan nomor unik untuk setiap karakter (referensi grafik unicode: http://unicode.org/charts/PDF/U0000.pdf).
Penyerang sering mengaburkan string teks dalam serangan mereka menggunakan unicode. Oleh karena itu, analis harus memahami cara mengonversi unicode.
Kode PHP dapat disematkan dalam kode HTML yang membentuk halaman web. Ketika browser pengguna masuk ke halaman web yang berisi kode PHP, web server mengeksekusi kode PHP. Browser pengguna tidak memerlukan plug-in khusus atau apa pun untuk melihat PHP bekerja.
Di bawah ini adalah contoh skrip PHP. Ketika skrip PHP ini dipanggil oleh browser web, server web akan menjalankan skrip PHP dan menampilkan "html bukan bahasa pemrograman" di browser web. Tag <? php dan ?> Memulai dan mengakhiri skrip PHP, dan konten sebenarnya dari skrip PHP berada di tengah.
<!DOCTYPE html>
<html>
<body>
<?php
echo "html bukan bahasa pemrograman";
?>
</body>
</html>
Penanggulangan serangan injeksi perintah termasuk yang berikut:
- Serangan injeksi perintah dapat terjadi ketika tidak disanitasi, masukan pengguna dilewatkan dan diproses. Untuk mencegah serangan injeksi perintah, pengembang aplikasi harus mengikuti praktik terbaik untuk melakukan validasi input dari pengguna dengan tepat.
- Terapkan solusi IPS untuk mendeteksi dan mencegah injeksi perintah jahat.
Sumber : SECFND Section 7
No comments:
Post a Comment