None

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

None
  • 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

  1. Level Low

Local File Inclusion(LFI)

None

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)

None

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

None

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 ..\ .

None

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:// .

None

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

None

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)

None

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

None

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

None
  • 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:

None
None
None

Hasil percobaan semua gagal karena whitelist yang sudah ditentukkan.