LOCAL/REMOTE FILE INCLUSION
Local File Inclusion (LFI) dan Remote File Inclusion (RFI) adalah jenis kerentanan yang sering ditemui dalam keamanan aplikasi web. Keduanya melibatkan penggunaan input yang tidak tervalidasi dengan baik, yang memungkinkan penyerang untuk memasukkan file ke dalam aplikasi web, baik dari server lokal (LFI) atau dari server remote (RFI).
Local File Inclusion (LFI)
Local File Inclusion (LFI) terjadi ketika aplikasi web memungkinkan pengguna untuk menyertakan file yang ada di server lokal. Dengan mengeksploitasi LFI, penyerang dapat:
- Mengakses file sensitif: File seperti
/etc/passwd
pada sistem Unix/Linux yang dapat mengungkapkan informasi pengguna. - Menjalankan kode berbahaya: Jika penyerang dapat mengunggah file ke server, mereka mungkin dapat menjalankan kode berbahaya.
- Mendapatkan akses ke konfigurasi aplikasi: Termasuk file konfigurasi yang dapat mengandung kredensial database dan informasi sensitif lainnya.
Remote File Inclusion (RFI)
Remote File Inclusion (RFI) terjadi ketika aplikasi web memungkinkan pengguna untuk menyertakan file dari server remote. Dengan mengeksploitasi RFI, penyerang dapat:
- Menjalankan kode berbahaya dari server remote: Penyerang dapat menjalankan skrip berbahaya yang ada di server mereka sendiri.
- Mengambil alih server: Dengan menjalankan kode berbahaya, penyerang dapat mengambil alih kontrol penuh atas server.
- Menginstal malware: Penyerang dapat menginstal malware pada server korban, yang dapat digunakan untuk berbagai tujuan berbahaya.
- Buat sebuah folder di C:\xampp\htdocs\ bernama lfi.
- Di dalam folder lfi, buat file bernama index.php dengan isi sebagai berikut:
- Buat file home.php di folder yang sama dengan isi :
- Buka browser dan akses http://localhost/lfi/index.php.
- Untuk membaca file di sistem Windows, kita bisa mencoba membaca file C:\xampp\htdocs\lfi\home.php
- dengan mengubah parameter
- URL: http://localhost/lfi/index.php?page=C:/xampp/htdocs/lfi/home.php
- Coba akses file sensitif seperti konfigurasi Apache: http://localhost/lfi/index.php?page=C:/xampp/apache/conf/httpd.conf
Penjelasan:
- Daftar File yang Diizinkan: Menggunakan array
$allowed_pages
untuk menyimpan nama file yang diizinkan dan kunci yang sesuai dengan nilai$_GET['page']
. - Validasi Input: Menggunakan
array_key_exists
untuk memeriksa apakah nilai$_GET['page']
ada dalam daftar yang diizinkan. - Include File yang Valid: Jika valid, include file yang sesuai dari daftar.
Dengan pendekatan ini, dapat menghindari kemungkinan serangan LFI karena hanya file yang ada dalam daftar yang dapat di-include.
DEMO 2: SERANGAN RFI
Buat folder di C:\xampp\htdocs\ bernama uploads.
Buat file uploads.php di C:\xampp\htdocs\lfi\ dengan isi sebagai berikut:
Buat file PHP berbahaya (shell.php) dengan isi:
Untuk mengamankan skrip unggahan file Anda dari serangan Remote File Inclusion (RFI), Anda perlu menerapkan beberapa langkah untuk memastikan hanya file yang sah yang dapat diunggah. Berikut adalah langkah-langkah kunci untuk meningkatkan keamanan skrip Anda:
- Batasi jenis file: Hanya izinkan jenis file tertentu untuk diunggah (misalnya, gambar, PDF).
- Periksa ekstensi file: Validasi ekstensi file.
- Periksa tipe MIME: Validasi tipe MIME dari file yang diunggah.
- Sanitasi nama file: Hapus karakter khusus dari nama file.
- Batasi ukuran file: Tetapkan ukuran maksimum file untuk unggahan.
Berikut adalah versi yang ditingkatkan dari skrip Anda yang mencakup langkah-langkah keamanan ini:
Penjelasan Penambahan:
- Jenis File yang Diizinkan: Hanya mengizinkan ekstensi file tertentu (
jpg
,jpeg
,png
,gif
,pdf
). - Batas Ukuran File: Memastikan file tidak lebih besar dari 5MB.
- Periksa Apakah File Sudah Ada: Mencegah penimpaan file yang sudah ada.
- Periksa Tipe MIME: Memastikan tipe MIME file sesuai dengan yang diizinkan.
- Sanitasi Nama File: Menghapus karakter berbahaya dari nama file.
Peningkatan ini akan membantu melindungi aplikasi Anda dari berbagai kerentanan unggahan file, termasuk serangan Remote File Inclusion (RFI).
Komentar
Posting Komentar