Dalam lanskap keamanan web, kerentanan "File Inclusion" tetap menjadi ancaman yang signifikan dan sering dieksploitasi. Secara fundamental, kerentanan ini terjadi ketika aplikasi web memungkinkan pengguna untuk memasukkan file ke dalam eksekusi server, biasanya melalui parameter input yang tidak divalidasi dengan benar. Ada dua varian utama dari serangan file inclusion ini yang sering membingungkan bagi sebagian orang: Local File Inclusion (LFI) dan Remote File Inclusion (RFI). Meskipun keduanya memanfaatkan kelemahan dalam penanganan file, perbedaan mendasar terletak pada sumber file yang disuntikkan, yang secara drastis mempengaruhi potensi dampak dan vektor serangannya. Memahami perbedaan ini sangat krusial bagi setiap praktisi keamanan, baik defensif maupun ofensif.
Perbedaan paling mencolok antara LFI dan RFI adalah asal file yang disertakan. Pada serangan Local File Inclusion (LFI), penyerang mengeksploitasi kerentanan untuk membaca atau mengeksekusi file yang sudah ada di server target. Ini berarti penyerang akan mencoba memanipulasi parameter input untuk menyertakan file lokal seperti /etc/passwd
(untuk membaca kredensial sistem pada Linux), log file (/var/log/auth.log
atau log web server yang bisa dipalsukan), atau bahkan file konfigurasi aplikasi itu sendiri, seringkali menggunakan teknik path traversal (../../
). Sementara itu, Remote File Inclusion (RFI) terjadi ketika aplikasi rentan mengizinkan penyertaan file dari lokasi eksternal atau jarak jauh yang dikontrol oleh penyerang, biasanya melalui URL (http://attacker.com/malicious_script.php
). Potensi bahaya RFI seringkali lebih tinggi karena memungkinkan penyerang mengeksekusi kode arbitrary langsung dari server mereka sendiri di mesin korban, membuka pintu lebar untuk kompromi sistem secara penuh.
Meskipun vektornya berbeda, baik LFI maupun RFI dapat berujung pada konsekuensi serius seperti eksekusi kode arbitrer, pengungkapan data sensitif, defacement website, atau bahkan Denial of Service (DoS). Mitigasi yang efektif untuk kedua kerentanan ini berakar pada prinsip keamanan dasar: jangan pernah memercayai input pengguna secara langsung. Validasi dan sanitasi input pengguna secara ketat adalah langkah pertama dan terpenting. Selain itu, sangat disarankan untuk menonaktifkan kemampuan penyertaan file jarak jauh di konfigurasi lingkungan server web (misalnya, mengatur allow_url_include = Off
di PHP). Menerapkan daftar putih (whitelist) untuk file yang diizinkan untuk disertakan, bukan daftar hitam, serta memastikan hak akses file dan direktori yang tepat di server, akan semakin memperkuat pertahanan terhadap serangan file inclusion ini. Dengan pemahaman yang jelas tentang mekanisme LFI dan RFI, kita dapat membangun pertahanan yang lebih kokoh dan melakukan pengujian penetrasi yang lebih efektif.