Local File Inclusion atau LFI adalah kerentanan / vulnerability yang umum ditemukan pada aplikasi web. Kerentanan ini memungkinkan penyerang/attacker untuk menyertakan, membaca, atau mendownload file lokal yang tersimpan di server agar dapat menjadi bagian dari proses eksekusi aplikasi.
Beberapa waktu lalu banyak exploit pada forum forum underground yang membahas tentang Local File Inclusion atau LFI. Banyaknya exploit LFI pada forum underground disertai oleh penggunaan php://filter sebagai teknik exploitasi.
Reconnaissance
1.Lakukan Extract URL pada Web target Menggunakan Sudomy, gospider, FindUrl, atau tools buatan nakanosec (untuk pengguna linux). Untuk pengguna windows bisa menggunakan tools online seperti hackertarget extract link (kurang powerfull) atau tools dari free extract url (direkomendasikan).
2.Cari url dimana pada url tersebut memasukkan link local.
Gunakan Payload php://filter/convert.base64-encode/resource=[SourceCodeTarget] sebagai penggati local file pada url. Pada kasus ini saya medapatkan link https://redacted.co.id/index.php?link=page/foto.php dengan tampilan sebagai berikut.
Karna memang output yang diberikan adalah base 64 maka kita dapat melakukan decrypt dengan mudah dengan tools decryptor penamilannya seperti berikut.
Nah disitu kita dapat Souce Code dari https://redacted.co.id/page/foto.php dimana kita menemukan file https://redacted.co.id/page/pesan_simpan.php yang di include kan. Hal ini jika dilakukan lebih dalam kita bisa menemukan konfigurasi database, atau bahkan hal hal sensitive lainnya (untuk demo mengambil database silahkan baca disini).
Selain itu Local File Inclusion juga dapat digunakan sebagai sarana Remote Command Execution atau RCE dengan menggunakan beberapa cara
1.Menggunakan /proc/self/environ atau /proc/self/ld dimana injeksi code dilakukan pada user agent (udah banyak tutornya jadi ga kami bahas)
2. Menggunakan Phpinfo dan LFI sebagai awal dari RCE. untuk toolsnya bisa dilihat disini
3.Menggunakan PHP Wrapper expect:// Pada tahap exploitasi selalu lakukan pengecekan dengan memasukkan payload expect://ls dan jika muncul error
Warning: include(): Unable to find the wrapper "expect" - did you forget to enable it when you<br> configured PHP? in /var/www/fileincl/example1.php on line 7 Warning: include(): Unable to find the<br> wrapper "expect" - did you forget to enable it when you configured PHP? in <br> /var/www/fileincl/example1.php on line 7 Warning: include(expect://ls): failed to open stream: No such file or directory in /var/www/fileincl/example1.php on line 7 Warning: include(): Failed opening 'expect://ls' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/fileincl/example1.php on line 7
Maka bisa dipastikan target kita dapat dilakukan RCE. untuk melakukan RCE kita hanya perlu melakukan post data dengan payload php://input
http://127.0.0.1/fileincl/example1.php?page=php://input