Local File Inclusion (LFI)

08 August 2014 by Harry Adinanta . 0 Comment

Daftar Isi

  1. Latar Belakang
  2. Mengidentifikasi kerentana Local File Inclusion (LFI)
  3. Mengexploitasi kerentanan Local File Inclusion:
  4. Selanjutnya

Latar Belakang

Local File Inclusion (LFI) adalah kerentanan/vulnerability yang umum ditemukan pada aplikasi web. Kerentanan ini memungkinkan penyerang/attacker untuk menyertakan file lokal yang tersimpan di server agar dapat menjadi bagian dari proses eksekusi aplikasi.

Kerentanan Local File Inclusion (LFI) terjadi karena fungsi “include” pada aplikasi dapat dimanipulasi oleh pengguna/users melalui Input. Hal ini sebenarnya tidak akan menimbulkan permasalahan apabila input yang berasal dari pengguna dapat difilter atau disanitasi sebelum fungsi “include” memprosesnya.

File inclusion juga dapat terjadi pada fungsi aplikasi yang memproses file berdasarkan nama file yang diberikan oleh pengguna. Hal ini juga biasa disebut dengan kerentanan File path traversal. Input yang diberikan oleh pengguna bisa menggunakan link pada url atau melalui input box

Singkat kata, dengan kerentanan Local File Inclusion (LFI) ini, penyerang dapat menginstruksikan aplikasi web untuk membaca isi file yang berada diluar direktori home aplikasi tersebut. Misalnya menginstruksikan aplikasi web untuk membaca log file xamp apache yang umumnya tersimpan di C:\xampp\apache\logs pada windows sistem.

Selain membaca isi file, penyerang juga dapat menginstruksikan aplikasi web yang rentan untuk mengeksekusi kode pemprograman yang telah dibuat dan disimpan oleh penyerang pada sebuah file.

Mengidentifikasi kerentana Local File Inclusion (LFI):

Berikut beberapa cara untuk mengidentifikasi kerentanan Local File Inclusion (LFI) pada aplikasi web:

1.Cara manual yaitu dengan menganalisa proses GET atau POST dimana secara kasat mata aplikasi membuka atau mengeksekusi suatu file. Contohnya:

GET REQUEST

alt text

POST REQUEST

alt text

2.Cara automatis yaitu menggunakan vulnerabiity scanner seperti burp suites.

Burp Suites Vulnerability Scanner

alt text

Mengexploitasi kerentanan Local File Inclusion:

Saatnya untuk mencoba meng-ekploitasi kerentanan Local File Inclusion (LFI). Berikut sistem yang saya gunakan dalam peragaan ini:

Bagi yang ingin mengetahui cara menginstal sistem diatas, akan saya jabarkan dalam tulisan terpisah.

Berikut langkah sederhana dalam meng-ekploitasi Local File Inclusion (LFI):

Validasi Kerentanan

1.Buka http://ip-xampp-server-anda/mutillidae

2.Buka salah satu link seperti http://ip-xampp-server-anda/mutillidae/index.php?page=text-file-viewer.php

alt text

3.Kemudian lakukan tes apakah parameter PAGE dapat membaca file lain di sistem dengan meng-input beberapa simbol “../”. Arti dari simbol ini adalah naik satu level ke direktori atas. Test dapat dilakukan dengan mencoba membaca file win.ini yang berada di c:\windows\win.ini. Untuk mencapai direktori ini, kita harus terlebih dahulu ke direktori paling atas yaitu c:\ dan kemudian turun ke direktori windows.

alt text

4.Apabila kerentanan sudah ditemukan dan divalidasi, coba membaca apache log file yang berada di C:\xampp\apache\logs\access.log

alt text

Exploitasi Kerentanan

Pertanyaan yang muncul selanjutnya adalah: “apa yang dapat dilakukan setelah log file apache dapat dibaca?” Jawabannya sederhana yaitu memanfaatkan file log tersebut untuk mengeksekusi perintah/command yang diinginkan.

Namun pertanyaan berikutnya adalah: “bagaimana caranya mengubah file log tersebut agar dapat menyimpan perintah yang diinginkan?. Bukankah pengguna tidak memiliki hak akses untuk mengubah file yang tersimpan di web server?.” untuk menyiasati ini, kita memanfaatkan web server yang memang selalu menulis semua aktifitas akses ke file log untuk menulis perintah yang kita inginkan. Hal ini dapat dilakukan dengan memasukan perintah yang diinginkan dalam sebuah GET request sehingga web server menuliskannya dalam file tersebut.

setelah file log “terkontaminasi” dengan perintah yang diinginkan, maka langkah selanjutnya adalah membaca file log tersebut sehingga perintah yang telah tertulis juga dapat dieksekusi oleh web server.

Berikut rincian langkahnya:

1.Gunakan netcat untuk membuat GET request ke http://ip-xampp-server-anda/mutillidae dan kemudian ketik perintah yang kita inginkan sebagai bagian dari request. Misalnya ketik perintah . perintah ini kemudian akan ditulis oleh web server apache ke file akses log secara otomatis.

alt text

2.Kemudian buka file akses log apache dengan memanfaatkan kerentanan Local File Inclusion (LFI). Setelah file tersebut terbaca oleh aplikasi, terdapat error yang menyatakan bahwa parameter “cmd” tidak memiliki nilai sehingga perintah “system()” tidak dapat dieksekusi. ini adalah error baru setelah akses log “dikontaminasi” dengan GET request sebelumnya. Error ini mengindikasikan bahwa aplikasi telah mencoba menjalankan perintah yang kita inginkan.

alt text

3.Perintah “system()” memerlukan parameter dimana parameter ini adalah nama program yang ingin kita jalankan seperti perintah ipconfig,hosts dan lain sebagainya. Perintah ini adalah sebagian kecil perintah-perintah yang tersedia di Sistem Operasi Windows XP dimana aplikasi web ini berjalan. Untuk menyederhanakan peragaan ini, kita coba meng-eksekusi perintah “ipconfig”

alt text

4.Boom!!!. Akhirnya kita dapat melihat ipconfig Windows XP yang menjalankan aplikasi web ini.

5.Alternatif lain adalah dengan memerintahkan aplikasi web untuk menjalankan perintah “dir c:\” untuk melihat file-file yang tersimpan di direktori c:. Namun sebelum itu, karena perintah ini memiliki karakter yang memiliki arti khusus di protokol http seperti “:,\”, maka perlu dilakukan encoding URL agar tidak diinterpertasikan oleh web server sebagai karakter khusus. Kita dapat melakukan enkoding ini menggunakan burp suites.

alt text

6.Kemudian masukan perintah yang sudah di encoding dalam format URL ke dalam parameter “cmd”

alt text

7.Boom lagi!!!!. kita dapat membaca isi dari direktori c:\

alt text

Selanjutnya

Selamat mencoba di Lab masing-masing