Halo rek, pada artikel ini saya ingin mengajak kalian untuk mengenal salah satu kerentanan pada website yaitu Local File Inclusion. Apa itu Local File Inclusion? Local File Inclusion adalah sebuah kerentanan dimana pengguna website dapat mengakses file-file yang ada di dalam web server baik tersembunyi ataupun sudah diketahui melalui user input biasanya melalui parameter yang ada di URL. Kerentanan ini juga dapat dimanfaatkan pengguna untuk menjalankan skrip jahat (misal: remote code execution) yang berhasil diunggah ke web server maupun melihat file-file penting yang sudah ada di dalamnya seperti salah satu contohnya konfigurasi database. Salah satu teknik yang umum dipakai untuk menjalan skrip jahat saat berhadapan dengan celah Local File Inclusion adalah access log poisoning. Singkatnya dengan access log poisoning kita akan mengirimkan skrip jahat melalui web request header (user agent) sehingga nantinya skrip jahat akan tersimpan di access log web server, kemudian kita bisa masukkan path access log web server melalui parameter yang memiliki celah Local File Inclusion, dengan begitu kode jahat akan tereksekusi. Kerentanan Local File Inclusion tergolong berbahaya meskipun pengguna tidak memiliki akses untuk mengupload maupun mengeksekusi kode jahat secara langsung, karena serangan ini biasanya dilakukan bersamaan dengan serangan Directory Traversal. Melalui serangan Directory Traversal pengguna bisa mendapatkan akses ke kredensial log, kode sumber, dan informasi sensitif lainnya.
Kerentanan Local File Inclusion yang terjadi ketika menggunakan bahasa pemrograman PHP biasanya karena kondisi seperti pada gambar berikut:
Pada gambar tersebut fungsi include digunakan untuk memanggil file dengan nama sesuai nilai dari variabel url. Jika nilai dari variabel url berisi /etc/passwd maka akan menampilkan isi dari file tersebut.
Perlu diketahui juga apabila konfigurasi allow_url_include pada php.ini bernilai on dapat menyebabkan kerentanan RFI (Remote File Inclusion) yang memberikan akses pengguna untuk memanggil file dari server yang berbeda.
allow_url_include secara bawaan sudah dinonaktifkan. Jika allow_url_fopen dinonaktifkan maka allow_url_include akan nonaktif juga. Konfigurasi ini tersedia mulai dari PHP 5.2
Pada gambar di bawah ini pengguna dapat mengakses situs google melalui parameter yang ada di url.
Pengguna juga bisa membaca isi file php dengan menggunakan perintah php://filter
Hasil dari perintah yang ada pada gambar di atas menampilkan isi kode index.php dalam bentuk base64. Jika ingin melihatnya bisa di decode seperti berikut
Untuk mengatasi adanya kerentanan LFI maka dapat dilakukan dengan menuliskan halaman atau nama file yang boleh diakses secara spesifik.
Gambar di atas menunjukkan apabila variabel url memiliki nilai ‘index.php’ maka akan memanggil file ‘index.php’ selain itu maka menampilkan tulisan ‘Not Found’. Kemudian pada config php.ini juga bisa dimatikan allow_url_include apabila fungsinya kurang diperlukan, biasanya allow_url_include sudah diatur bernilai off.
Jika teman-teman ingin mencoba mempraktekkan kerentanan LFI bisa dengan menginstall DVWA di perangkat kalian. DVWA adalah sebuah proyek website yang berisi banyak kerentanan dengan tujuan untuk media belajar. Tampilannya seperti ini
Untuk mendownloadnya saya sertakan link berikut ini https://dvwa.co.uk/ atau coba juga salah tau proyek dari SHL yaitu SVWA (SHL Vulnerable Web Apps) di https://github.com/darkcyber/SVWA-SHL-Vulnerable-Web-Apps-
Referensi:
https://www.kaskus.co.id/thread/5ef413dfc8393a2df8024dd3/penjelasan-mengenai-local-file-inclusion/
https://www.ronar.net/2020/04/remote-file-inclusion-rfi.html
0 Comments