
Secara teknis, ini adalah celah keamanan di mana seorang penyerang bisa "memaksa" aplikasi web untuk menampilkan atau menjalankan file yang seharusnya tidak boleh diakses oleh publik.
Di DVWA, celah ini sengaja dibuat untuk menunjukkan apa yang terjadi jika perintah include dalam kode PHP tidak dijaga dengan ketat.
Analogi "Buku Menu Restoran"
Bayangkan sedang di restoran yang mempunyai tablet untuk memesan makanan. Tablet tersebut mempunyai tombol:
- Klik tombol A : Muncul file menu_makanan.pdf
- Klik tombol B : Muncul file daftar_makanan.pdf
Secara sistem, tablet memanggil file berdasarkan nama tetapi penyerang yang cerdas tidak akan mengklik tombol, tapi mengubah intruksi di sistem menjadi:
"Tolong tampilkan file buku_catatan_keuangan_rahasia.pdf"
Karena sistemnya tidak mempunyai satpam (filter), si tablet malah menampilkan data rahasia tersebut. Itulah File Inclusion.
Dampak Dari File Inclusion
- Kebocoran data sensistif: File rahasia server seperti daftar user, password database, atau konfigurasi sistem bocor.
- Pengambilalihan Server: Penyerang bisa memasukkan virus atau script berbahaya dari server mereka sendiri untuk mengontrol website target sepenuhnya.
- Deface: Mengganti tampilan website target sesuka hati.
Fitur Di File Inclusion DVWA

- Parameter URL: Pintu masuk utama untuk belajar memanipulasi teks setelah tanda = untuk ke file berbeda.
- Local File Inclusion(LFI): Fitur untuk mencoba memanggil file yang sudah ada di dalam laptop/server kamu sendiri.
- Remote File Inclusion(RFI): Fitur untuk memanggil file dari internet (website luar) agar dijalankan di website tersebut.
Percobaan File Inclusion
- Level Low
Local File Inclusion(LFI)

LFI artinya kita ingin mengintip file yang ada di laptop kita sendiri melalui website tersebut. Disini saya memakai php stream. Hasilnya
URL: http://localhost/dvwa/vulnerabilities/fi/?page=?page=data://text/plain,<?php%20phpinfo();?>
Remote File Inclusion(RFI)

RFI artinya kita menyuruh website untuk mengambil dan menjalankan file dari internet (website lain). Disini saya mencoba dengan alamat website Google.
URL: http://localhost/dvwa/vulnerabilities/fi/?page=https://www.google.com
Kerentanan Level Low

Kerentanan pada level low terlihat jelas bahwa variabel $file mengambil apa pun yang diketikkan pengguna di URL secara mentah-mentah.
2. Level Medium
Di level ini pengembang mulai sadar akan adanya bahaya dan mencoba menaruh penjaga "satpam" untuk menjaga pintu tersebut. Namun satman ini masih cukup ceroboh dan mudah dikelabui.
Local File Inclusion (LFI)
Pada level medium menggunakan teknik LFI tidak semudah sebelumnya, karena adanya fung PHP yang menyaring input pengguna. Server mencegah inputan di url ../ dan ..\ .

Solusi untuk Bypass adalah mengakali dengan menyisipkan ../ di dalam ../ . jadi payload nya …/./…/./…/./…/./…/./…/./windows/system32/drivers/etc/hosts
Hasilnya daftar pemetaan IP lokal Windows akan muncul di layar.
Remote File Inclusion(RFI)
Sama seperti LFI, sistem akan menghapus kata http:// maka kita akali dengan htthttp://p:// .

htthttp://p:// sistem akan menghapus bagian tengah, sisa hurufnya menyatu kembali menjadi protokol yang utuh.
URL: http://localhost/dvwa/vulnerabilities/fi/?page=htthttp://p://www.google.com
Kerentanan Level Medium

Meskipun sudah menerapkan str_replace untuk menghapus http://, https:// dan ..// atau ..\\ tetapi sistem hanya bekerja satu kali dan tidak memeriksa hasil akhirnya. Jadi kita manfaatkan "kata di dalam kata" atau Nesting.
3. Level High
Jika di level medium satpam hanya membuang senjata yang terlihat, di level high satpam hanya memperbolehkan orang masuk jika namanya ada di daftar undangan dan diawali dengan kata sandi tertentu.
Local File Inclusion(LFI)

Karena aturan pada level ini harus ada kata "file" di depan, maka jelas tidak bisa memakai ..//..// lagi. Maka digunakan payload file:///C:/Windows/win.ini .
Hasilnya isi win.ini akan muncul: "; for 16-bit app support [fonts] [extensions] [mci extensions] [files] [Mail] MAPI=1"
URL: http://localhost/dvwa/vulnerabilities/fi/?page=file:///C:/Windows/win.ini
Remote File Inclusion(RFI)
Pada level ini teknik RFI sulit dilakukan karena kita wajib menggunakan kata file di depan tapi memanggil Google butuh http.
Di level ini pengembang sudah menutup pintu RFI bagi orang awam.
Kerentanan Level High

Di level ini diterapkan fungsi fnmatch() yang membuat inputan harus diawali dengan "file" tanpa itu sistem akan menolaknya.
Meskipun begitu masih ada celah bagi LFI yaitu dengan menipu satpam dengan menggunakan protokol file:// karena inputnya harus diawali kata "file" maka kode PHP akan mengganggapnya sah.
4. Level Impossible
Pada level ini celah keamanan file inclusion baik FLI maupun RFI sudah benar-benar tertutup rapat.
Keamanan Level Impossible

- Sistem tidak lagi mencari pola seperti apakah ada kata file, tetapi sistem langsung bertanya apakah ini sama persis dengan file1.php. file2.php, file3.php jika tidak sistem menolak.
- Meskipun memasukkan file:///C:/Windows/win.ini sistem tetap akan menolak karena tidak ada di dalam daftar yang diizinkan.
Percobaan Level Impossible:



Hasil percobaan semua gagal karena whitelist yang sudah ditentukkan.